请高手帮我看下这个简单的程序问题出在哪里?
#include<iostream.h>struct node
{
int data;
struct node *next;
struct node *prev;
};
struct node *create()
{
struct node *p,*q,*head;
head=0;
int i;
cin>>i;
while(i!=0)
{
p=new struct node;
p->data=i;
p->next=0;
if(head==0)
{
head=p;
q=head;
}
else
{
q->next=p;
p->prev=q;
q=p;
}
cin>>i;
}
return(head);
}
void show(struct node *head)
{
struct node *p;
p=head;
while(p!=0)
{
cout<<p->data<<endl;
p=p->next;
}
}
struct node *sort(struct node *head)
{
struct node *p,*q,*r,*t,*headnew=0;
p=head;
r=head;
int max=0;
while(r!=0)
{
p=r;
max=0;
while(p!=0)
{
if(p->data>max)
{
max=p->data;
q=p;
}
p=p->next;
}
if(q->prev==0&&q->next!=0)
head=q->next;
else if(q->next==0&&q->prev!=0)
q->prev->next=0;
else
q->prev->next=q->next;
q->prev=0;
q->next=0;
if(headnew==0)
{
headnew=q;
t=headnew;
}
else
{
t->next=q;
t=q;
q->prev=t;
}
r=head;
}
return(headnew);
}
void main()
{
struct node *head;
head=create();
show(head);
head=sort(head);
show(head);
}
编译没错误,就是运行的时候出问题了,不能继续运行下去。只能显示没有排序之前的链表的内容。