zoukankan      html  css  js  c++  java
  • 双向链表的插入

    问题:

        给定一个已排序的双向链表,向其中插入一个元素。

    solution:

    struct ListNode {
        int val;
        ListNode *prev;
        ListNode *next;
    };
    
    int insert(ListNode *head, int value)
    {
        ListNode *cur;
        ListNode *next;
        for (cur = head; (next = cur->next) != NULL; cur = next)
        {
            if (next->val == value)
                return 0;
            if (next->val > value)
                break;
        }
    
        ListNode *newNode = new ListNode;
        newNode->val = value;
    
        newNode->next = next;
        cur->next = newNode;
        if (cur != head)
            newNode->prev = cur;
        else
            newNode->prev = NULL;
        if (next != NULL)
            next->prev = newNode;
        else
            head->prev = newNode;
        return 1;
    }

    有两点需要注意:

    1. 声明一个头结点head,其中head->prev指向链表最后一个结点,head—>next指向链表第一个结点。

    2. 当插入元素和链表中元素重复时,不执行插入操作。

    reference:

    《C和指针》

  • 相关阅读:
    FJUT3260
    Codeforces Round #387 (Div. 2)
    poj 1375
    试题 历届试题 蚂蚁感冒(模拟)
    丢手绢(尺取)
    「金」点石成金(dfs)
    小A买彩票(dp)
    不平行的直线
    最少交换次数
    第k小数(桶排序)
  • 原文地址:https://www.cnblogs.com/gattaca/p/4748738.html
Copyright © 2011-2022 走看看