Ejemplo de programación de listas enlazadas
int elem
nodo de estructura * siguiente
} nodo, * LinkList
Para lista enlazada L: L es apuntando a Un puntero a una estructura de nodo definida, puede usar el operador -> para acceder a los miembros de la estructura, es decir, l -> Elem, y (*L) es una estructura de tipo de nodo. Puede acceder a los miembros de esta estructura utilizando el operador de punto, es decir, (*L). elem
Para LinkList *L:L es un puntero a la estructura de nodo definida, por lo que (*L) es un puntero a la estructura de nodo. Puede utilizar el operador ->; es decir (* l)->; Por supuesto, elem((* L) es una estructura de nodo, por lo que puede utilizar el operador de punto para acceder a los miembros de la estructura, es decir (**L). elem
En las operaciones de listas vinculadas, a menudo usamos listas vinculadas para cambiar los parámetros de la función de recorte. En este momento, vale la pena considerar si usar LinkList L o LinkList * L. Si una no se usa correctamente, la función. tiene errores lógicos:
Si la función cambiará el valor del puntero L y desea guardar el valor de L después de llamar a la función, entonces debe usar LinkList *L, para que el La dirección del puntero se pasa a la función y el valor del puntero puede cambiar naturalmente después de que se completa la llamada;
Si la función solo modifica el contenido al que apunta el puntero, pero no cambia. el valor del puntero, entonces LinkList L funcionará;
Demos un ejemplo específico
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
typedef int ElemType
nodo de estructura typedef{ p>
ElemType elem
nodo de estructura * siguiente
} nodo, * LinkList
// Después de llamar a la función, L apuntará a una lista vinculada vacía, esta lista vinculada vacía cambiará el valor del puntero, así que use *. L.
void InitList(LinkList *L)
{
* L =( LinkList)malloc(sizeof(Node));
(* L)-& gt; next = NULL
}
// Borra la lista enlazada L, de modo que L vuelva a ser una lista enlazada vacía. llamado, el valor del puntero L no cambiará, solo se cambiará el contenido señalado por el puntero L (es decir, el valor de L->; siguiente)
Lista clara no válida (lista vinculada) L)
{
Lista enlazada p;
mientras(p = L-& gt; siguiente){
l-& gt; siguiente = p-& gt; siguiente;
Gratis (p);
}
//Destruir vinculado lista L, libera la memoria utilizada por la lista vinculada L y deja que el valor de L vuelva a ser NULL, lo que cambiará el valor de L, por lo que debes usar * L
void DestroyLlist(lista vinculada * L)
{
Lista enlazada p;
mientras(p = (*L)) {
(* L) =(* L) ->Siguiente;
Gratis(p);
}
Gratis(*L);
*L = NULL
}
int main()
{
Lista L = vacía;
InitList(& amp; l);
Borrar lista (L);
Destruir lista (& ampl);