Pida a expertos que me ayuden a escribir mi tarea de lenguaje C. Recompensa por puntuación alta
El siguiente es el programa fuente en lenguaje C. La configuración de la estructura es ligeramente diferente a la del póster original, modifíquela usted mismo, es muy simple.
Descripción de la función: puede crear, insertar, eliminar listas vinculadas, escribir registros en documentos de texto e imprimir información de listas vinculadas.
Instrucciones de uso: Seleccione la operación requerida de acuerdo con las opciones del menú de operación (1-6); el operando de impresión de la función de impresión es 5. Ingrese 1 primero e ingrese el valor correspondiente de acuerdo con las indicaciones.
Tenga en cuenta que al ingresar la información del estudiante, el orden es
nombre, número, marca (separados por espacios y las puntuaciones son números enteros)
¡Se puede ejecutar la prueba! ! !
#include "stdio.h"
#include "alloc.h"
#definir tamaño LEN de (nodo)
# define NULL 0
typedef struct stu
{
char nombre[20];
int num;
int mark;
struct stu *next;
}node
/*Crear una nueva lista enlazada*/
nodo; *create_List( int n)
{
int i
nodo *cabeza, *cola,
cabeza= tail=( node *)malloc(LEN);
head-gt; num=n /*El nodo principal de la lista vinculada almacena la longitud de la lista vinculada*/
for(i=0; ilt ; n; i )
{
p=(nodo *)malloc(LEN);
printf( "Ingrese un grupo de información:\n ");
scanf("sdd",p-gt;name,amp;p-gt;num,amp;p-gt;mark);
if(head= =NULL)
{
head=tail=p;
printf("¡Esta es una lista NULL! \n");
}
else
{
tail-gt; next=p;
p-gt; siguiente=NULL;
tail=p;
}
}
regresar cabeza;
}
/*Insertar nodo*/
nodo *insertar(nodo *head, int pos, nodo *q)
{
int i=1;
nodo *p, *r;
p=head-gt; nodo principal*/
r =head;
while(ilt;posamp;amp;p!=NULL)
{
r=p;
p =p-gt; siguiente;
i
}
r-gt; ;
q-gt; next=p; /*Insertar un nuevo nodo entre r y p*/
head-gt; lista después de insertar el nodo*/
printf("Ese
¡El nodo s está insertado!\n");
return head;
}
/*Eliminar nodo*/
nodo * eliminar(nodo *head, int pos)
{
int i=1
nodo *p, *r; p > p=head-gt;siguiente;
r=head;
while(ilt;posamp;amp;p!=NULL)
{
p>if(p==NULL)
printf("¡Esta es una lista NULL!\n"); > {
r=p;
p=p-gt; siguiente
i
}
}
r-gt; next=p-gt; next; /*Eliminar nodos en otras ubicaciones*/
next-gt;
p>
free(p);
head-gt; num-=1 /*La longitud de la lista vinculada después de eliminar el nodo*/ p>
printf("¡Este nodo está eliminado!\n");
return head;
}
/*Guardar los datos de entrada en la forma de un documento de texto*/
text_Output(node *head)
{
FILE *fp
nodo; *p;
p=head-gt; siguiente;
if((fp=fopen("Estudiante.txt", "w "))==NULL)
{
printf( "¡No se puede abrir el archivo!\n");
devuelve 0;
}
hacer
{
fprintf(fp, "nombre: s\t\tnúmero: d\tmarca: d\n", p-gt; nombre, p-gt; num, p-gt; marca);
p=p-gt; siguiente;
}mientras(p!=NULL);
}
/*Mostrar nueva lista enlazada*/
mostrar(nodo *cabeza)
{
nodo *p;
p=head -gt; siguiente;
if(p==NULL)
{
printf("¡Esta es una lista NULL!\n");
p>return 0
}
hacer
{
if(p-gt; next-gt; numlt ;=p-gt;num) /*Pon p-gt;n
um está ordenado en orden ascendente*/
{
int t;
p-gt; gt; núm;
p-gt; núm=p-gt; núm;
siguiente-gt;
}
printf("nombre: s\t\tnúmero: d\tmarca: d\n", p-gt; nombre, p-gt; num, p-gt; marca); p>
p=p-gt; next;
} while(p!=NULL);
printf("La longitud de la lista es: 2d", encabezado- gt; num); /*La longitud de la nueva lista enlazada*/
return 1;
}
/*Función principal*/
principal ()
{
int n, i, num, pos
nodo *head, *q; p> head=NULL ;
while(1)
{
printf("************LISTA DE ENLACES* ***** *****\n");
printf("1---Crear una lista de enlaces \n");
printf("2- --Insertar un nodo en la Lista de enlaces \n");
printf("3---Eliminar un nodo de la Lista de enlaces\n");
printf("4- --Envía un mensaje de texto a la lista de enlaces actuales \n");
printf("5---Imprime la lista de enlaces actuales \n");
printf("6--- Salir \n") ;
printf("****Seleccione 1--6 para Operar****\n");
scanf("d",amp ;i);
if(ilt; 1||igt; 6) continuar
cambiar(i)
{
caso 1: printf( "¡Ingrese una matriz para crear la lista!\n");
printf("Ingrese el número total de estudiantes: ");
scanf("d" ,amp;n) ;
head=create_List(n);
break;
caso 2: printf("Ingrese el nuevo nodo insertado\n") ;
q=(nodo *)mal
loc(LEN);
scanf("sddd", q-gt; nombre, amp; q-gt; num, amp; q-gt; marca, amp; pos
<); p> head=insert(head, pos, q);break;
caso 3: printf("Ingrese el nodo antiguo eliminado\n"); > scanf("d", amp; pos);
head=delete(head, pos
break
caso 4: text_Output(head); );
ruptura;
caso 5: mostrar(cabeza);
ruptura
caso 6: salida(1);
}
getch();
}
}