当前位置: 代码迷 >> 综合 >> [剑指Offer]---反转链表与合并两个排序的链表
  详细解决方案

[剑指Offer]---反转链表与合并两个排序的链表

热度:85   发布时间:2023-10-17 00:14:51.0

反转链表

描述

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

 

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
 

限制:

0 <= 节点个数 <= 5000

class Solution {
public:ListNode *reverseList(struct ListNode* head) {struct ListNode *newHead = NULL;struct ListNode *node;while (head != NULL) {//1. 对之前的链表做头删node = head;head = head->next;//2. 对新链表做头插node->next = newHead;newHead = node;}return newHead;}};

 

 

合并两个排序的链表

描述

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:

0 <= 链表长度 <= 1000

ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{ListNode *pHead = new ListNode(0);ListNode *p = pHead;while(pHead1 != NULL && pHead2 != NULL){if(pHead1->val < pHead2->val){p->next = pHead1;pHead1 = pHead1->next;}else{p->next = pHead2;pHead2 = pHead2->next;}p = p->next;}if(pHead1 != NULL){p->next = pHead1;}if(pHead2 != NULL){p->next = pHead2;}return pHead->next;
}

 

 

 

  相关解决方案