Estoy buscando un programa en lenguaje C simple con más de 30 líneas. Cada línea debe ser comentada. Lo usaré mañana.
Programación en Lenguaje C (Capítulo 7 Estructuras y Objetos)
El nodo insertado puede estar al principio, en el medio o al final de la tabla. Supongamos que construimos una lista vinculada en orden de número de estudiantes y luego los nodos
insertados se comparan con los nodos en la tabla para encontrar la posición de inserción. Dado que el nodo insertado puede estar al principio de la lista vinculada, modificará el puntero del encabezado de la lista vinculada, por lo que el valor de retorno de la función que define el nodo insertado se define como un puntero de tipo de estructura de retorno. La
función de inserción del nodo es la siguiente:
struct
node
*insert(head,pstr,n)
/*Inserte el nodo con número de estudiante n y nombre pstr*/
struct
node
*head;
/*Puntero de cabecera de la lista enlazada*/
char
*pstr;
int
n;
{
estructura
nodo
*p1,*p2,*p3;
p1=(estructura
node*)malloc(sizeof(struct
node));/*
Asignar un nuevo nodo*
/
strcpy (p1->str,pstr);
/*
Escribe la cadena de nombre del nodo*/
p1->num=n ;
p>/*
Número de estudiante*/
p2=head;
if(head==NULL) p>
/*
Tabla vacía*/
{
head=p1;
p1->next=NULL ;/*Nuevo nodo Insertar encabezado*/
}
else
{
/*tabla no vacía*
/
while(n>p2->num&&p2->next!=NULL)
/
*El número de estudiante ingresado es menor que el número de estudiante del nodo y no está Al final de la tabla*
/
{
p3=p2;
p2= p2->next;
/*
Seguimiento del crecimiento de la lista enlazada*/
}
if(n<= p2->num)
/* Encuentra la posición de inserción*/
if
(head==p2)
/
*
Insertar La posición está en la cabecera de la mesa*
/
{
head= p1;
p1->next=p2;
}
else
{
/*El la posición de inserción está en la tabla*/
p3->next=p1
p1->next=p2;
}
else
{
/*La posición de inserción está al final de la tabla*/
p2->next=p1;
p1->next=NULL;
}
} p>
return(head);/*
Devuelve el puntero principal del lista enlazada*/
}