第二章 线性表—双链表的建立
数据结构基础代码 (严蔚敏 人邮教育出版社)
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
#define OK 1
typedef int ElemType;
typedef struct DLNode
{
ElemType data;
struct DLNode *prior;
struct DLNode *next;
}DLNode,*DLinkList;
void Init(DLinkList &L)
{
L=new DLNode;
L->prior=L;
L->next=L;
}
int DLinkInsert(DLinkList &L,int n)
{
int i;
ElemType e;
DLNode *s,*p;
p=L->next;
printf("请输入链表中");
printf("%d",n);
printf("个元素:\n");
for(i=0;i<n;i++)
{
scanf("%d",&e);
s=new DLNode;
s->data=e;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
}
return OK;
}
void Print(DLinkList L)
{
DLNode *p;
p=L->next;
int isf=0;
printf("您所建立的双链表为:");
while(1)
{
if(p==L)
{
break;
}
if(isf++ > 0)
{
printf("%d",p->data);
printf(" ");
p=p->next;
}
}
}
int main()
{
int n;
DLinkList L;
Init(L);
printf("请输入链表中元素个数:\n");
scanf("%d",&n);
DLinkInsert(L,n);
Print(L);
}
双链表插入图解: