码迷,mamicode.com
首页 > 其他好文 > 详细

双链表(二)

时间:2019-08-25 14:04:01      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:pre   插入   因此   节点   node   nbsp   不同   null   delete   

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

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

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

插入节点:

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;
    }
}

 

双链表(二)

标签:pre   插入   因此   节点   node   nbsp   不同   null   delete   

原文地址:https://www.cnblogs.com/hzb1224/p/11407460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!