#include #include #include typedef struct DULNODE { int data; /*数据域*/ struct DULNODE *prior; /*指向前驱结点的指针域*/ struct DULNODE *next;/*指向后继结点的指针域*/ }DULNODE,*DuLinklist; typedef int Elemtype; DuLinklist Dulist_creat(DuLinklist L,int n)/*双向循环链表建立函数*/ {int i; DuLinklist p,r; L=( DuLinklist)malloc(sizeof(DULNODE));/*为头结点分配空间*/ L->next=L->prior=L; /*使头结点的后继指针和前驱指针都指向自身,形成空的双向循环链表*/ r=L; /*尾指针初始指向头结点*/ for (i=0;i data); /*从键盘输入值,并保存在新结点数据域中*/ p->next=r->next; /*新结点后继指针指向尾结点r的后继结点*/ p->prior=r; /*新结点的前驱指针指向尾结点r*/ r->next=p; /*尾结点的后继指针指向新结点*/ r=p; /*尾指针指向新结点,即新结点成为尾结点*/ } L->prior=r; /*使尾结点成为头结点的前驱结点*/ return L; }