循环链表
2026/4/9小于 1 分钟
循环单链表
typedef struct LNode{ //定义单链表结点类型
ElemType 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;
}循环双链表
typedef struct DNode{ //定义单链表结点类型
ElemType data; //每个结点存放一个数据元素
struct DNode *prior,*next;
}DNode,*DLinkList;
bool InitDLinkList(DLinkList &L){
L=(LNode *)malloc(sizeof(LNode)); //分配一个头结点
if(L=NULL) //内存不足,分配失败
return false;
L->prior=L; //头结点prior永远指向NULL
L->next=L; //头结点之后暂时还没有结点
return true;
}插入
bool InsertNextDNode(DNode *p,DNode *s){
s->next=p->next;
p->next->prior=s;
s->prior=p;
p->next=s;
}删除
p->next=q->next;
q->next->prior=p;
free(q);