尾插法创建链表、打印链表、合并两个有序链表

注意:
链表默认没有头节点,第一个节点就有值。

C/C++代码

# include <iostream>
# include <vector>

using namespace std;

struct listnode {
    int val;
    listnode *next;

    listnode(int x) : val(x), next(nullptr) {}
};

class Solution {
public:
    listnode *build_linklist(vector<int> &nums) {
        if (nums.empty())
            return nullptr;
        int n = nums.size();
        listnode *head = new listnode(nums[0]);
        listnode *pre = head;
        for (int i = 1; i < n; i++) {
            listnode *temp = new listnode(nums[i]);
            pre->next = temp;
            pre = pre->next;
        }
        return head;
    }

    void print_linklist(listnode *head) {
        if (!head)
            return;
        while (head) {
            cout << head->val << " ";
            head = head->next;
        }
        cout << endl;
    }

    listnode *merge_linklist(listnode *a, listnode *b) {
        if (!a)
            return b;
        if (!b)
            return a;
        listnode *head, *temp;
        if (a->val <= b->val) {
            head = a;
            a = a->next;
        } else {
            head = b;
            b = b->next;
        }
        listnode *p = head;
        while (a && b) {
            if (a->val <= b->val) {
                temp = a;
                a = a->next;
            } else {
                temp = b;
                b = b->next;
            }
            p->next = temp;
            p = p->next;
        }
        if (a)
            p->next = a;
        if (b)
            p->next = b;
        return head;
    }
};

int main() {
    vector<int> a = {1, 4, 8, 9};
    vector<int> b = {2, 3, 5, 10};
    Solution s;
    listnode *head_a = s.build_linklist(a);
    listnode *head_b = s.build_linklist(b);
    s.print_linklist(head_a);
    s.print_linklist(head_b);
    listnode *head_merge = s.merge_linklist(head_a, head_b);
    s.print_linklist(head_merge);
    return 0;
}

 上一篇
构造二叉排序树与前序遍历、中序遍历、后序遍历的递归和非递归实现 构造二叉排序树与前序遍历、中序遍历、后序遍历的递归和非递归实现
前序遍历、中序遍历、后序遍历的递归和非递归实现前序遍历顺序:根->左->右。中序遍历顺序:左->根->右。后序遍历顺序:左->右->根。前序和中序遍历都是先一路向下遍历节点至最左下角的节点,将这一路上的节
下一篇 
ER图详解及实例 ER图详解及实例
ER图基本概念ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。实体(entity):即数据模型中的数据对象(即数据表),用长方体来表示,每个实体都有自己的实体成员(entity member)或者
2019-06-23
  目录