循环单链表、双向链表的创建初始化、删除

循环单链表的初始化:

//循环单链表的初始化
bool InitCyList(Linklist &L)
{
    L = new LNode;//创建一个新的结点作为头结点,用头指针L指向头结点
    L->next = L;//让头结点的指针域为本身

    return true;
}

带尾指针的循环链表的合并:

//带尾指针的循环链表的合并
Linklist Connect(Linklist Ta, Linklist Tb)
{
    LNode *p = Ta->next;
    Ta->next = Tb->next->next;
    delete Tb->next;
    Tb->next = p;
    return Tb;
}

双链表的创建:

//双链表的创建
typedef struct DuLNOde {
    int data;
    struct DuLNOde *prior, *next;
}DuLNOde,*DuLinkList;

双向链表的初始化:

//双链表的初始化
bool InitDulist(DuLinkList &L)
{
    L = new DuLNOde;
    L->next = L->prior = NULL;
    return true;
}

 双向链表的删除

bool ListDeleteDul(DuLinkList &L, int i, int &e)
{
    //找到位置
    DuLNOde *p = L;
    int j = 0;
    while (p && j < i - 1)
    {
        p = p->next;
        j++;
    }
    if (!p || j > i - 1)
        return false;

    //删除
    e = p->data;
    p->prior->next = p->next;
    p->next->prior = p->prior;
    delete p;
    return true;
}

 

存储密度:

顺序存储存储密度=1  链式存储存储密度<1

posted @ 2020-10-17 13:34  小迪xiaodi  阅读(404)  评论(0)    收藏  举报