Estructuras de Datos – Programación C

Los programas a continuación habían escrito basado en mi conocimiento y no se considera ningún escenario días lluviosos (Temas Negativo / rendimiento). Por favor, hágamelo saber si usted encuentra cualquier discrepancia en el contenido

C Programas de Doble Punteros
—————————– ;

Doble puntero significa que señala la dirección del puntero, como se muestra a continuación

.

int ** p;
int * a;
int j = 9;
p = & a
/ / puntero contiene la dirección de la variable
a = & j
p = Indica la dirección del puntero (& a) = 500
* p = da el valor presente en la dirección de los 500 que es 399 (a j o y) .
** p = Da el valor presente en la dirección de 399, que es 4 (j) .

# include
# include
int main () {

** int i, * u, j = 3;

/ * Doble puntero apunta a la dirección del puntero * /
u = &j;

/ * puntero contiene la dirección de la variable * /
i = &u;

printf («El valor de i:% u n», i); printf />
printf («El valor de u:% u n», u); printf />
printf («El valor de & j:% u n», y j); printf />

salida ====
[~] double_sample.c-o # gcc test.exe
[~] # / test.exe
El valor de i:. 3214414668
El valor de u: 3214414668
El valor de u: 3214414664
El valor de * i: 3214414664
El valor de & j: 3214414664
El valor de j : 3

Programa de Memoria Doble Punteros Asignación
=============================================

# include
# include
int ()
principal {
int ** p = NULL;

/ * Asignar la memoria para la Doble puntero * /
p = (int **) malloc (sizeof (int));

* Doble puntero
* /
* p = (int *) malloc (sizeof (int));

printf («El valor de p: % u n «, p); printf />

** p = 9;

printf («El valor de ** p:% d n», ** p);}

[~] # / test.exe
El valor de p: 134520840
El valor de * p: 134520856
El valor de & p. : 3218864012
El valor de ** p: 9

Programa C para la lista de Doble Enlace
——————————-

# include
# include

# define SALIDA 10 />
typedef struct nodo
{int datos /> struct nodo * siguiente ;
struct nodo * anterior;
} NODO;

* NODO cabeza, * cola;

/ *
* Crear Lista de enlaces
* /
NODO * createLinkList ( int data) {

NODO * newNode = NULL;

newNode = (NODO *) malloc (sizeof (NODO *));
newNode-> prev = NULL;
newNode-> siguiente = NULL;
newNode-> data = datos;

retorno newNode;
}
/ *
* InsertLinkList ()
* /
vacío insertLinkList ()
{
NODO * nuevo, * temp;
int k = 1;

de datos int, pos;

printf («Introduzca los datos para ser insertado en Lista de enlaces n»);
scanf («% d», & datos);
;
new = createLinkList (datos);

if (cabeza == NULL) {

cabeza = nuevo;
return;} printf

(«Introduzca la Posición de Lista de enlaces n» );
scanf («% d», & pos);

/ * Inserta frente del nodo * /
si (pos == 1) {

nuevo-> siguiente = cabeza;
cabeza-> prev = new;
cabeza = new;
return;}

temp = cabeza;

while ((k siguiente = NULL)!)

{temp = temp-> siguiente;
k + +;}

/ * Inserte el último el nodo * /
if (temp-> siguiente == NULL)
{temp->
next = nuevo;
nuevo-> prev = temp;
}

/ * Inserte el medio del nodo * /
demás

{nuevo-> prev = temp;
nuevo-> ; next = siguiente temp->;
temp-> siguiente-> prev = new;
temp-> ; next = nuevo;
}
}
/ *
* Eliminar
* /
vacío deleteLinkList (void)
{
NODO * temp, * temp2;

int k = 1;

int pos;

printf («Introduzca la posición del nodo que desea eliminar n»);
scanf («% d», & pos);

if ( cabeza! = NULL) {

/ * Eliminar Inicio * /
si (pos == 1) {

temp = cabeza;
cabeza = cabeza-> siguiente;

si (cabeza = NULL!)
cabeza-> prev = NULL;

libre (temp);
return;}

temp = cabeza;
while ((k siguiente! = NULL)) {

; temp = temp-> siguiente;
k + +;}

/ * Eliminar último nodo * /
if (temp-> siguiente NULL == )

{temp2 = temp;
if ( ! temp-> prev = NULL) />
prev-> siguiente = NULL;
; gratis (temp2);}

/ * Suprimir Medio * /

else {
= temp2 temp;
temp -> anterior-> siguiente = temp-> siguiente;
temp-> siguiente-> prev = temp-> prev;
libre (temp2);}

}
demás
{printf />
retorno;
;}}

/ *
* Pantalla ()
* /

void display () {

NODO * temp;

temp = cabeza;

printf («El Data es n»);
mientras (temp! = NULL) {

printf («% d n», temp-> data);
temp = temp-> siguiente;}

} / *
* Principal ()
* /
int main ( )

{int ch, datos, pos;
no

{ ; ch = 0;
printf (» n Introduzca la opción n»);. printf />



printf («Introduzca 10 para SALIR n»);
scanf («% d», & ch);
interruptor (ch)
{case />
insertLinkList ();
romper;
case 2:
deleteLinkList ();
; romper;
case 3: pantalla ();
romper; />
printf («Invalid Choice n»);
romper;
};
} while (ch! = EXIT);
; return 0;}

Programa C para la lista Enlace Circular
———————————

# include
# include

# define SALIDA 10 />

{int datos /> struct nodo * siguiente;
} NODO;

* NODO cabeza, * última;

NODO * createLinkList (int data) {

NODO * newNode = NULL;

newNode = (NODO *) malloc (sizeof (NODO *));

newNode-> ; next = NULL;
newNode-> data = datos;

retorno newNode;
}
/ *
* InsertLinkList ()
* /
vacío insertLinkList () {

NODO * nuevo, * temp;
int k = 1;

de datos int, pos;

printf («Introduzca los datos para ser insertado en Lista de enlaces n»); scanf
(«% d», & datos);

new = createLinkList (datos );

if (cabeza == NULL) {

cabeza = nuevo;
cabeza-> siguiente = cabeza;
last = cabeza;
return;}

printf («Introduzca la posición de Lista de enlaces n»);
scanf («% d», & pos);

if (pos == 1) {

nuevo-> siguiente = último-> siguiente;
última-> siguiente = nuevo;
cabeza = nuevo;
retorno;
}
temp = cabeza;

while (! (k siguiente = cabeza))
{/>
siguiente;
k + +;
}
if (temp-> siguiente == cabeza)

{nuevo-> ; next = temp-> siguiente;
temp-> siguiente = nuevo;
last = nuevo;
}

else {nuevo-> next = siguiente temp->;
temp- > siguiente = nuevo;
}
}
/ *
* Eliminar
* /
vacío deleteLinkList (void)
{
NODO * temp, * temp2;

int k = 1;

int pos;

printf («Introduzca la posición del nodo que desea eliminar n»);
scanf («% d», & pos);

si (cabeza! = NULL) {

if (pos == 1) {

if (cabeza-> siguiente == cabeza)

{ ; gratis (cabeza);
cabeza = NULL;}

;

else {temp2 = cabeza;
temp = cabeza-> siguiente;
cabeza-> siguiente = 0;
cabeza = temp;
última-> siguiente = cabeza;

libre (temp2);
temp2 = NULL;
}
retorno;}

; temp = cabeza;
while (! (k siguiente = cabeza))
; {
temp = temp-> siguiente;
k + +;
}
if (temp-> siguiente == cabeza)

{temp2 = último-> siguiente;
última-> siguiente = 0; />
; next = temp2;

temp2 = último;
last = temp;

libre (temp2);
temp2 = NULL;
}

else {temp2 = temp-> siguiente ;
temp-> siguiente = temp-> siguiente-> siguiente;
libre (temp2);
temp2 = NULL;}

}
else {printf />
retorno;
}}

/ *
* Pantalla ()
* /
void display () {

NODO * temp;

temp = cabeza;

printf («El Data es n»);

if (temp! = NULL) {

if (temp == cabeza)
printf («% d n», los datos temporales->);

temp = temp-> siguiente;

while (temp! = cabeza) />

; datos);
temp = temp-> siguiente;}

}
else {printf />

/ *
* Principal ()
* /
int main ()

{int ch, datos, pos;
no

{ ch = 0;
printf (» n Introduzca la opción n»); printf />


scanf («% d», & ch);

interruptor (ch)
{case />
insertLinkList ();
break;
case 2:
deleteLinkList ();
romper;
, y el caso 3: pantalla ();
break;

default:
printf («Invalid Choice n»);
romper;
};
} while (ch! = EXIT);
return 0;}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *