Я хочу удалить узел, используя функцию deletea () в моем коде, но после этого я ввожу бесконечный цикл в функцию display ()? - PullRequest
0 голосов
/ 27 января 2019

Я несколько раз пытался исправить код, но напрасно

void deletea(int x)
{
int q=0,r;
while(list[q].next!=-1 && list[q].info != x)
    q = list[q].next ;
    r = list[q].next ;
    list[q].next = list[r].next ;
    list[r].next = avail ;
    avail = r;
}
void display()
{
    int p = 0;
    while(list[p].next != -1)
    {
        printf("\n%d\t%d\t%d",p,list[p].info,list[p].next) ;
        p = list[p].next ;
    }
    printf("\n%d\t%d\t%d",p,list[p].info,list[p].next) ;
}

ожидаю отображения оставшихся узлов с помощью display (), но я вхожу в бесконечный цикл - это статическая версия связанногосписок, который преподается нам в школе без указателей

1 Ответ

0 голосов
/ 27 января 2019

Добавление этого после цикла while может помочь

if(list[q].next == -1)
{
printf("Deletion not possible") ;
return ;
}
...