美文网首页
两个链表合并且倒序输出C++代码

两个链表合并且倒序输出C++代码

作者: 臻甄 | 来源:发表于2022-01-12 14:38 被阅读0次
#include <iostream>
using namespace std;

struct MyNode {
    int val;
    MyNode *next;
};

MyNode* create_link(int arr[], int num) {
    MyNode *head, *p, *node;
    head = NULL;
    for(int i = 0; i <= num - 1; ++i) {
        p = new MyNode;
        p->val = arr[i];
        p->next = NULL;

        if(head == NULL) {
            head = p;
        } else {
            node->next = p;
        }
        node = p;
    }
    return head;
}

MyNode* merge_link(MyNode* head1, MyNode* head2) {
    if (!head1) {
        return head2;
    }
    if (!head2) {
        return head1;
    }

    if (head1->val < head2->val) {
        head1->next = merge_link(head1->next, head2);
        return head1;
    } else {
        head2->next = merge_link(head1, head2->next);
        return head2;
    }
}

MyNode* reverse_link(MyNode* head)
{
    MyNode* link_head = head;
    MyNode* link_tail;
    MyNode* preNode = NULL;
    MyNode* pNode = head;
    MyNode* afterNode = head->next;
    for (pNode = link_head; pNode != NULL; pNode = afterNode) {
        afterNode = pNode->next;
        pNode->next = preNode;
        preNode = pNode;
    }
    link_tail = preNode;
    link_head = link_tail;
    return link_head;
}

void print_link(MyNode* p) {
    while(p != NULL) {
        cout << p->val << " ";
        p = p->next;
    }
    cout << endl;
}

int main() {
    int arr1[] = {1, 5, 7};
    int arr2[] = {2, 4, 6};
    int num1 = sizeof(arr1) / sizeof(int);
    int num2 = sizeof(arr2) / sizeof(int);

    MyNode *head1, *head2, *new_head, *rev_head;
    head1 = create_link(arr1, num1);
    head2 = create_link(arr2, num2);
    print_link(head1);
    print_link(head2);

    cout << "merge_link: " << endl;
    new_head = merge_link(head1, head2);
    rev_head = reverse_link(new_head);
    print_link(rev_head);

    return 0;
}

运行结果

1 5 7 
2 4 6 
merge_link: 
7 6 5 4 2 1 

相关文章

  • 两个链表合并且倒序输出C++代码

    运行结果

  • 单链表倒序输出

    单链表结构的定义: 输出方法示例: 1. 借用栈存储输出 2. 递归(觉得最神奇好用的方法,没有之一) 3. 翻转...

  • 206.Reverse Linked List(Easy)

    Reverse a singly linked list.倒序输出一个单链表 My Solution (Java)...

  • 链表面试题

    1.链表反转 2.倒序输出链表 3.输出链表中倒数第 k 个节点,k从1开始计数。 4.删除单链表指定节点 5.查...

  • 剑指Offer - 15 - 反转链表

    题目描述 反转链表 输入一个链表,反转链表后,输出新链表的表头。 思路 用一个指针来保存链表倒序,遍历一次链表,每...

  • 链表中倒数第k个结点

    输入一个链表,输出该链表中倒数第k个结点。 两个指针,一个指针先走k步,之后另外一个指针再走 C++ 代码

  • 合并两个排序的链表

    题目来源:牛客网--合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合...

  • 剑指offer(十六)合并两个排序的链表

    点击进入 牛客网题库:合并两个排序的链表 题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合...

  • javascript对象数组操作

    以下代码输出什么? 飞天虎 以下代码输出什么? 男 写sortString函数,实现字符串倒序 JSON格式的数据...

  • 剑指offer:合并两个排序的链表

    题目分析 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 代码

网友评论

      本文标题:两个链表合并且倒序输出C++代码

      本文链接:https://www.haomeiwen.com/subject/ckywcrtx.html