链表操作
要求用链表排序,我想输一个排一个,以下是我编的,可是,结果就是出不来,我怀疑是while语句最后那两行出问题,可是我不知道到底是为什么错,帮忙看一下吧,谢谢!当我用p指向新建的结点,并把它插进链表之后,我可以在申请内存空间吗?就像我做的那样,要不要delete?我尝试加过,可是连那句"依次排序为"都出不来了...请高手指点,谢谢!
#include <iostream>
using namespace std;
struct Node
{
double content;
Node *next;
};
int main()
{
Node *head=NULL;//创建新链表;
Node *p=new Node;
cout<<"请输入要排序的数,以-1结束:"<<endl;
cin>>p->content;//输入第一个数;
head=p;
p->next=NULL;//第一个结点创建完毕;
Node *q=new Node;
cin>>q->content;
while (q->content!=-1)
{ bool done=false;
Node *x=head;
if (x->content>q->content)//看新输入的数是否应该安排在第一个结点;
{ q->next=x;
head=q;
done=true;
}
else//新输入的数插在当中;
{ Node *r=head;
x=x->next;
for (;x!=NULL;x=x->next,r=r->next)
if (q->content < x->content)
{ q->next=x;
r->next=q;
done=true;
break;
}
}
if (!done)//新输入的数插在最后;
{ x=q;
q->next=NULL;
}
Node *q=new Node;
cin>>q->content;
}
Node *s=new Node;
int count=0;
cout<<"依次排序为:"<<endl;
for (s=head;s->next!=NULL;s=s->next)//输出;
{ cout<<s->content<<'\t';
count++;
if (count%6==0)
cout<<endl;
}
cout<<endl;
return 0;
}