紧急求助!!!C++构造双向链表问题,谢谢大伙儿了!!!

来源:百度知道 编辑:UC知道 时间:2024/05/29 16:22:36
我们老师留了个作业,我苦思苦想也没结果,哪位好人帮忙给解决一下,(要完整的程序)谢谢,谢谢了!

构造一个双向链表,链表的每个结点都包含一个整数值,一个指向下一结点的指针next ,一个指向上一结点的指针prev 。整个链表有一个头指针head,一个尾指针tail.
首结点的prev指针指向空,尾结点的next指针指向空。
构造链表时,要求用户从键盘输入结点个数N,然后用户输入这N个整数,按照用户输入的顺序构造双向链表。
对构造好的链表,先从头结点开始,沿着next指针输出所有结点的整数值;然后从尾结点开始,逆序输出所有结点

#include<iostream.h>
struct node
{
int a;
node *next,*prev;
};
void main()
{
int n,i;
cout<<"N?";
cin>>n;
node *head,*tail,*s,*p;
head=NULL;
for(i=0;i<n;i++)
{
s=new node;
cin>>s->a;
if(head==NULL) head=s;
else {p->next=s;s->prev=p;};
p=s;
};
p->next=NULL;
tail=p;
head->prev =NULL;
p=head;
cout<<p->a<<" ";
do
{ p=p->next;
cout<<p->a<<" ";
}while(p->next!=NULL);
cout<<endl<<endl;
p=tail;
cout<<p->a<<" ";
do
{
p=p->prev;
cout<<p->a<<" ";
}while(p->prev!=NULL);
}