Red de conocimiento informático - Conocimiento sistemático - Por favor, ayúdenme a escribir dos programas, uno es para buscar y ordenar y el otro es una lista enlazada unidireccional. Lo pido desde abajo. Se entregará pasado mañana.

Por favor, ayúdenme a escribir dos programas, uno es para buscar y ordenar y el otro es una lista enlazada unidireccional. Lo pido desde abajo. Se entregará pasado mañana.

Escribí "Operaciones básicas de listas enlazadas unidireccionales", que es más difícil, y te dejo la "Aplicación de algoritmos de búsqueda y clasificación".

#include?

#include?

typedef?int?Type;

typedef?struct?node?{

Tipo?datos;

estructura?node?*siguiente;

}*LLIST,*pNode;

LLIST?CreateList( )?{?//?Crear una lista enlazada individualmente

LLIST?head;

pNode?p;

Type?num;

head?=?p?=?(pNode)malloc(sizeof(struct?node));

p->data?=?0;

while(scanf( "% d",&num)?==?1)?{

p->siguiente?=?(pNode)malloc(sizeof(struct?node));

p -> siguiente->datos?=?num;

p?=?p->siguiente;

}

p->siguiente?=?NULL ;

return?head;

}

void?Sort(LLIST?head)?{?//?Ordenación ascendente (ordenación por selección)

pNode?p,q,pt,qt;

for(p?=?head;?p->siguiente;?p?=?p->siguiente)?{

qt?=?p;

for(q?=?p->siguiente;?q->siguiente;?q?=?q->siguiente)?{

if(qt->siguiente->datos?>?q->siguiente->datos)

qt?=?q;

}

if (qt?=?p)?{

pt?=?p->siguiente;

p->siguiente?=?qt->siguiente;

qt->siguiente?=?p->siguiente->siguiente;

p->siguiente->siguiente?=?pt;

}

}

}

int?InsertElem(LLIST?head,Type?x,int?pos)?{

pNode?q,p;< / p>

int?i?=?1;

for(p?=?head;?p->siguiente?&&?i? siguiente,++i);

if(i?==?pos)?{

q?=?(pNode)malloc(sizeof(struct?node));

q->datos?=?x;

q->siguiente?=?p->siguiente;

p->siguiente?=?q ;

return?1;?//?Se insertó correctamente en la posición especificada

}

return?0;?//?pos no está dentro del rango de longitud de la lista enlazada

}

int?DeleteElem(LLIST?head,int?pos)?{

pNode?q,p;

int?i?=?

1;

for(p?=?head;?p->siguiente?&&?i?siguiente,++i);

if(i?==?pos)?{

q?=?p->siguiente;

p->siguiente?=?q->siguiente;

free(q);

return?1;?//Eliminar correctamente el elemento especificado

}

return?0;? / /?El elemento especificado no se encontró y la operación de eliminación falló.

}

void?ShowList(LLIST?head)?{

pNode?p?=?head->siguiente;

while(p)?{

printf("%d?",p->datos);

p?=?p->siguiente;

}

printf("\n");

}

int?main()?{

LLIST?head?= ?CreateList();

ShowList(head);

InsertElem(head,15,5);

ShowList(head);

DeleteElem(head,7);

ShowList(head);

return?0;

}