Список в списке - исправить ошибку в коде - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Проблема: При заполнении внутреннего списка ругается на "p->prev2->next=p->p2;" Что я делаю не так?
struct list{
    char aa[22];
    list *next;
    struct list2 *p2,*cur2,*prev2,*top2;
}*p,*top,*prev,*cur;
struct list2{
    char xx[22];
    list2 *next;
};
 
void push()
{
    top=0;
    int n,i,k=0;
    printf("\n size:\n");
    scanf("%i",&n);
    printf("\n Input:\n");
    for(;n;n--)
    {
        p=new list;
        scanf("%s",&p->aa);
        p->next=NULL;
        while(cur && p->aa >cur->aa)
        {
            prev=cur;
            cur=cur->next;
        }
        if(prev==NULL)
        {
            p->next=top;
            top=p;
        }
        else
        {
            p->next=cur;
            prev->next=p;
        }
    }
    p=top;
    while(p)
    {
        p->p2=p->top2;
        printf("%s",p->aa);
        printf("\n size (inside):\n");
        scanf("%i",&i);
        printf("\n input: ( push into inside\n");
        for(;i;i--)
        {
            p->p2=new list2;
            scanf("%s",&p->p2->xx);
            if(!k){
                p->top2=NULL;
                k++;
            }
            p->p2->next=NULL;
            while(p->cur2 && p->p2->xx > p->cur2->xx)
            {
                p->prev2=p->cur2;
                p->cur2=p->cur2->next;
            }
            if(p->prev2==NULL)
            {
                p->p2->next=p->top2;
                p->top2=p->p2;
            }
            else
            {
                p->p2->next=p->cur2;
                p->prev2->next=p->p2;
            }
        }
        k=0;
        p=p->next;
    }
}
void show()
{
    p=top;
    if(p==NULL) printf("\n list is empty\n");
    while(p)
    {
        printf(" %s",p->aa);
        p->p2=p->top2;
        while(p->p2)
        {
            printf("%s",p->p2->xx);
            p->p2=p->p2->next;
        }
        p=p->next;
    }
}
void main()
{
    push();
    show();
    system("PAUSE");
}

Решение задачи: «Список в списке - исправить ошибку в коде»

textual
Листинг программы
p->prev2=new list2;
                                p->prev2->next=p->p2;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5