循坏链表

58 阅读1分钟

循坏链表仅在初始化上与普通链表不同,插入删除操作都相同

循坏单链表

结构体
typedef struct LNode
{
    Elemtype data;
    struct LNode *next;
}LNode, *LinkList;
初始化
bool InitList(LinkList &L)
{
    L = (LinkList)malloc(sizeof(LNode));
    if(L == NULL)
        return false;
    L->next = L;  //头结点next指针初始指向自己
    return true;
}
判空
bool Empty(LinkList &L)
{
    if(L->next == L)
        return true;
    return false;
}
判断表尾结点
bool isTail(LinkList L, LNode *p)
{
    if(p->next == L)
        return true;
    return false;
}

循坏双链表

判空和判断队尾与上述一致

结构体
typedef struct DNode
{
    Elemtype data;
    struct DNode *prior, *next;
}DNode, *DLinkList;
初始化
bool InitDLinkList(DLinkList &L)
{
    L = (DLinkList)malloc(sizeof(DNode));
    if(L == NULL)
        return false;
    L->next = L;
    L->prior = L;
    return true;
}