建立双链表与建立单链表的方法类似,不过需要注意的是,要对结点的前驱指针域指向上一结点,头结点前驱指针域为NULL。
示例程序如下:
1#include<iostream>
2using namespace std;
3struct DNode{
4 int data;
5 DNode *pre,*next;
6};
7DNode *head,*p,*r;
8int main(){
9 int x;
10 cin>>x;
11 head=new DNode;
12 head->next=0;
13 head->pre=0;
14 r=head;
15 while(x!=-1){
16 p=new DNode;
17 p->data=x;
18 p->pre=r;//将结点p的前驱指针指向上一结点
19 p->next=0;
20 r->next=p;
21 r=p;
22 cin>>x;
23 }
24 p=head->next;
25 while(p!=0){
26 cout<<p->data<<' ';
27 p=p->next;
28 }
29}