вывод в списке (си)

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Евгений Александрович
Сообщения: 82
Зарегистрирован: 19 дек 2009, 16:48

Проблема: не выводит внутренние данные. Что у меня не так с выводом?! ( вывод- ф-ция 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);
}
Ответить