Red de conocimiento informático - Computadora portátil - La programación en lenguaje C siempre falla y la verificación de errores dice que hay un problema con el programa principal.

La programación en lenguaje C siempre falla y la verificación de errores dice que hay un problema con el programa principal.

Hay un problema con el algoritmo del programa y aparecerá un bucle infinito (use f10 para un solo paso y lo sabrá), compruébelo usted mismo nuevamente

Este tipo de problema es muy simple: use un enlace list.A continuación utilizo una lista enlazada circular bidireccional para implementarla. Puede consultarla

#include "stdio.h"

#include "stdlib.h".

#include "malloc.h"

#define NULL 0

Lista de estructuras

{

int datos;

nombre de char[15];

p>

estructura Lista *siguiente;

estructura Lista *anterior;

}Lista ;

struct List * InitList(int n)

{/Cree una lista enlazada circular bidireccional con head como nodo principal y datos desde 1 hasta n.

Devolver puntero de cabecera

struct List *head, *p, *q;

int i

head=(struct List *)malloc(sizeof(struct); Lista));

head-gt; data=1;

printf("Ingrese el nombre del primer niño: "); ", cabeza-gt; nombre);

cabeza-gt; siguiente=cabeza;

cabeza-gt; anterior=cabeza;

p=cabeza;

for(i=2;ilt;= n;i)

{

q=(struct List *)malloc(sizeof(struct List)) ;

q-gt;data=i;

printf("Por favor ingrese el nombre del niño dth:",i);

scanf(" s", q-gt; nombre);

p-gt; siguiente=q;

q-gt; prioridad=p;

q-gt ;siguiente=cabeza;

cabeza-gt;prior=q;

p=p-gt;siguiente;

}

return head;

}

void GetList(struct List *head, int w, int s)

{

struct List * p, *q;

p=cabeza;

int i;

for(i=1; ilt; w; i , p=p-gt ;siguiente);

for(;p-gt;siguiente!=p;i,p=p-gt;siguiente)

if((i-w 1)s==0 )

{

q=p-gt; anterior;

p-gt; siguiente-gt; anterior;

p-gt; anterior-gt; siguiente=p-gt; siguiente;

printf("s\n", p-gt; nombre

gratis); ( p);

p=q;

}

printf("s\n", p-gt; nombre); p>}

void main()

{

int n, w, s;

estructura Lista *head

p>

do

{

system("cls");

printf("Ingrese el número total de niños : ");

scanf("d",amp;n);

if(ngt;0)head=InitList(n); //Se puede ejecutar repetidamente hasta nlt ;=0 stop

else exit(0);

printf("Ingrese la posición y el intervalo del niño que fi

informó por primera vez el número: ");

scanf ("d, d", w, s);

GetList (head, w, s);

p>

sistema ("pausa");

} mientras (1);