双链表(二)

Posted hzb1224

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双链表(二)相关的知识,希望对你有一定的参考价值。

双链表的插入新节点与删除节点

关于插入新节点,双链表和单链表用到的方法一样,唯一不同的是双链表还需要将指向前一个数据节点的指针里面存放的地址按照逻辑进行交换

关于删除节点,单链表用到了两个指针,一个指针指向需要删除的某一个节点,另一个指针指向删除前面一个节点,才可以做到整个链表不会乱,双链表因为有一个指针是指向前面一个节点的,因此就不需要再重新声明一个指针。

插入节点:

void node_insert(node* head, int n)  //n用来指明在哪一个数据节点后面创建

    node *p,*q;  //p来指向节点,q用来创建新节点
    int l=0;
    p = head->next;
    while (p != NULL)
    
        l++;
        if (l == n)  //找到位置后,实现创建插入
        
            q = new node;
            cin >> q->a;
            q->next = p->next;  //指向下一个数据节点的地址交换后,还没有完
            p->next = q;
            if (q->next != NULL) 
                q->next->pre = q;  //还需要交换指向前面一个数据节点的地址
            q->pre = p;
            break;
        
        p = p->next;
    

 

删除节点:

void node_delete(node* head, int n)

    node *p;
    int l = 0;
    p = head->next;
    while (p != NULL)
    
        l++;
        if (l == n)
        
            p->pre->next = p->next;  //找到删除的前一个节点的next指针
            p->next->pre = p->pre;//找到删除的后一个节点的pre指针
            delete p;
            break;
        
        p = p->next;
    

 

以上是关于双链表(二)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 链表操作:单连表和双链表

数据结构之双链表

(王道408考研数据结构)第二章线性表-第三节3:循环单链表和循环双链表

数据结构之双链表

平衡二叉树(AVLTREE,双链表实现)

双链表和循环链表