双向循环链表与单向循环链表的差别在于,双向循环链表有两个指针,一个是指向下一个结点,一个是指向上一个结点。
//双向链表
#include <iostream>
#include <malloc.h>
using namespace std;
//双向循环链表
struct node{
int x;
struct node *next;
struct node *parent;
}*head,*f;
void creat(int n){
struct node *t,*p;
head=(struct node *)malloc(sizeof(struct node));
head->x=0;
head->next=NULL;
head->parent=NULL;
t=head;
int i;
for(i=1;i<n;i++){
p=(struct node*)malloc(sizeof(struct node));
p->x=i;
p->next=NULL;
p->parent=t;
t->next=p;
t=t->next;
}
f=t;
//加上这两句语句就成为了双向循环链表
head->parent=t;
t->next=head;
}
int main()
{
struct node *t;
int n=13;
int i=0;
creat(n);
t=head;
while(i<n+5){
cout<<t->x<<" ";
t=t->next;
i++;
}
cout<<endl;
i=0;
while(i<n+5){
cout<<f->x<<" ";
f=f->parent;
i++;
}
cout<<endl;
return 0;
}