双向循环链表的创建_双向循环链表的建立
双向循环链表的创建由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“双向循环链表的建立”。
#include #include #define OVERFLOW-2 #define ERROR 0 #define OK 1 typedef int status;//双向循环链表的存储结构 typedef struct DuLNode {
int data;
int Length;
struct DuLNode *prior;
struct DuLNode *next;} DuLNode,*DuLinkList;//构建一个空的双向循环链表 int InitList(DuLNode **p){
*p=(DuLNode *)malloc(sizeof(DuLNode));if(*p){
(*p)->next=(*p)->prior=*p;
(*p)->Length=0;} else
exit(OVERFLOW);} //双向循环链表的创建
int Create(DuLinkList &L,int n){ //输入n个元素的值,建立带头结点的双线循环链表L DuLinkList p=L,q;
int i;for(i=1;i
q=(DuLinkList)malloc(sizeof(DuLNode));/*申请一个结点*/
printf(“请输入第%d个元素的值:”,i);
scanf(“%d”,&q->data);
p->next =q;
q->prior=p;
q->next=L;
L->prior =q;
p=q;
L->Length ++;} } //结点的输出
int Display(DuLinkList L){
DuLinkList p;
printf(“双向循环链表中的结点的数据为:”);
for(p=L->next;p->next!=L;){
printf(“%d”,p->data);
printf(“ ”);
p=p->next;}
printf(“%dn”,p->data);} //主函数实现双向循环链表的创建
int main(){
DuLinkList L;int n,i;
InitList(&L);printf(“请输入创建循环结点的个数:”);scanf(“%d”,&n);Create(L,n);Display(L);printf(“双向循环链表中结点的个数为:%dn”,L->Length);
return 0;}