循环单双链表
判断是否是空表
循环单链表-> 表头的后继指针指向自己
循环双链表->表头的前向指针和后继指针是否都指向自己
代码问题
1.链表的初始化
2.如何判空
3.如何判断结点p是否是表头/表尾结点
4.如何在表头标.表中.表尾.插入/删除一个结点
typedef struct DNode{
Elemtype data;
struct DNode *next,*prior;
} DNode,*DLinkList;
void testDLinkList()
{
DlinkList L;
InitLinkList(L);
}
双链表初始化
bool InitDLinkList(DLinkList &L){
L=(DNode *) malloc(sizeof(DNode));
if(L == NULL)
return false;
L->next = L;
L->prior=L;
return true;
}
判断循环双链表是否为空
bool Empty(DLinklist L)
{
if(L->next == L)
return true ;
else return false;
}
判断结点p是否是双循环链表的表尾结点
bool isTail(DLinkList L,DNode *p)
{
if(p->next == L)
return true;
else return false;
}
循环双链表的插入和删除与双链表大致相同(不用考虑节点后为空的情况)