Список в списке - исправить ошибку в коде - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д