1.循环单链表
#include#include typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; bool InitList(LinkList &L){ L=(LNode*)malloc(sizeof(LNode)); if(L==NULL){ //内存空间不足 return false; } L->next=L; return true; } bool Empty(LinkList &L){ if(L->next==L){ return true; }else{ return false; } } bool IsTail(LinkList L,LNode *p){ if(p->next==L){ return true; }else{ return false; } }
2.循环双链表
#include#include typedef struct DNode{ int data; struct DNode *prior,*next; }DNode,*DLinkList; bool InitDLinkList(DLinkList &L){ L=(DNode*)malloc(sizeof(DNode)); if(L==NULL){ return false; } L->prior=L; L->next=L; return true; } bool Empty(DLinkList L){ if(L->next==L){ return true; }else{ return false; } } bool IsTail(DLinkList L,DNode *p){ if(p->next==L){ return true; }else{ return false; } } bool InsertNextDNode(DNode *p,DNode *s){ s->next=p->next; p->next->prior=s; s->prior=p; p->next=s; } bool DeleteNextDNode(DNode *p,DNode *s){ p->next=s->next; s->next->prior=p; free(s); } void main(){ DLinkList L; InitDLinkList(L); }
3.静态链表
#include#include //静态链表的最大长度 #define MaxSize 10 struct Node{ int data; int next; //下一个元素的数组下标 }; void InitNode(Node &arr){ arr[0]->next=-1; for(int i=1;i next=-2; //空的标记为-2,方便计算机识别 } } void main(){ struct Node arr[MaxSize]; //数组a 作为静态链表 InitNode(arr); }



