#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; } **********************************************原文:
|
|
来自: e3399 > 《CLanguage》