建立双链表:
在双链表中,由于每个节点既包含一个指向后继节点的指针,又包含一个指向前驱节点的指针,所以当访问过每一个节点后既可以依次向后访问每一个节点,也可以依次向前访问每一个节点。因此,与单链表相比,双链表访问一个节点的前后节点更方便。
代码实现:
typedef struct DNode
{
int data;
struct DNode *prior;
struct DNode *next;
} DLinkNode;
void CreateListF(DLinkNode *&L,int a[],int n) // 头插法
{
DLinkNode *s;
L=(DLinkNode *)malloc(sizeof(DLinkNode));
L->prior=L->next=NULL;
for(int i=0; i<n; i++)
{
s=(DLinkNode *)malloc(sizeof(DLinkNode));
s->data=a[i];
s->next=L->next;
if(L->next!=NULL)
L->next->prior=s;
L->next=s;
s->prior=L;
}
}
void CreateListR(DLinkNode *&L,int a[],int n) // 尾插法
{
DLinkNode *s,*r;
L=(DLinkNode *)malloc(sizeof(DLinkNode));
r=L;
for(int i=0;i<n;i++)
{
s=(DLinkNode *)malloc(sizeof(DLinkNode));
s->data=a[i];
r->next=s;
s->prior=r;
r=s;
}
r->next=NULL;
}