一:定义
二:循环单链表
2.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;
}
2.2 判断循环单链表是否为空
bool Empty(Linklist L){
if(L->next==L)
return true;
else
return false;
}
2.3 判断结点p是否为循环单链表的表尾结点
bool isTail(LinkList L, LNode *p){
if(p->next==L)
return true;
else
return false;
}
2.4 其他
三:循环双链表
3.1 初始化代码
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
bool InitDLinkList(DLinklist &L){
L = (DNode *)malloc(sizeof(DNode));
if(L==NULL)
return false;
L->prior = L;
L->next = L;
return true;
}
void testDLinkList(){
DLinklist L;
InitDLinkList(L);
}
3.2 判断循环双链表是否为空
bool Empty(Dlinklist L){
if(L->next == L)
return true;
else
return false;
}
3.3 判断结点p是否为循环双链表的表尾结点
bool isTail(DLinklist L, DNode *p){
if(p->next == L)
return true;
else
return false;
}
3.4 双链表的插入
bool InsertNextDNode(DNode *p, DNode *s){
s->next = p->next;
p->next->prior = s;
p->prior = p;
p->next = s;
}
3. 5 双链表的删除
p->next=q->next;
q->next->prior=p;
free(q);
```![在这里插入图片描述](https://img-blog.csdnimg.cn/2049dbcc3f6e4762800160ec4bb39e96.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP2FiYyE=,size_20,color_FFFFFF,t_70,g_se,x_16)
# 四:知识回顾与重要老点
![在这里插入图片描述](https://img-blog.csdnimg.cn/c1af1c91213a4db3a95dc2074de0c9ae.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP2FiYyE=,size_20,color_FFFFFF,t_70,g_se,x_16)