вывод в списке (си)
Добавлено: 06 июн 2010, 15:23
Проблема: не выводит внутренние данные. Что у меня не так с выводом?! ( вывод- ф-ция show(); ).
Код: Выделить всё
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=new list2;
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\n",p->aa);
p->p2=p->top2;
while(p->p2)
{
printf(" %s\n",p->p2->xx);
p->p2=p->p2->next;
}
p=p->next;
}
}
void main()
{
push();
show();
printf("\n");
system("PAUSE");
free(p);
}