分享

双向循环链表的基本操作

 e3399 2011-06-24
#include <malloc.h>
#include <stdio.h>
//以下双向循环链表均带有头节点;头节点不存放数据,只起到带头作用。
typedef struct DLLNode{
 int data;
 struct DLLNode *prior;
 struct DLLNode *next;
}DLLinkNode;
//双向循环链表的建立(正插入法)
DLLinkNode * CreatDLList(DLLinkNode *DLL,int n){
 DLL=(DLLinkNode*)malloc(sizeof(DLLinkNode));
 DLL->prior=DLL;
 DLL->next=DLL;
 DLLinkNode *p0=DLL,*p;
 int i;
 for(i=n;i>0;--i){
  p=(DLLinkNode*)malloc(sizeof(DLLinkNode));
     printf("input the data:\n");
  scanf("%d",&p->data);
  p0->next =p;
  p->prior=p0;
  p0=p;
 }
 p0->next=DLL;
 DLL->prior=p0;
 return DLL;
}
//双向循环链表的打印
void DisplayDLList(DLLinkNode *L){
 struct DLLNode *p=L->next;
 while(p!= L){
  printf("%d\n",p->data);
  p=p->next ;
 }
}
//双向循环链表的测长
int GetLengthDLList(DLLinkNode *L){
 struct DLLNode *p=L->next;
 int length=0;
 while(p!= L){
  length++;
  p=p->next ;
 }
 return length;

**********************************************原文:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多