C Programas de Doble Punteros
—————————– ;
Doble puntero significa que señala la dirección del puntero, como se muestra a continuación
.
# 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
{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
; 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;
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
; {
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;}