两个已经按照从小到大的排序的链表,合并成一个链表,仍然保持从小到大排序(貌似是归并排序里的基本操作)
#include<stdio.h>
struct Node
{
int data;
struct Node *next;
};
//创建链表
struct Node *create(int n,int count)
{
int i;
struct Node *head,*p1,*p2;
head = p1 = p2 = (struct Node*)malloc(sizeof(struct Node));
head->data = 2-n;
for(i=1; i<count; i++)
{
p1 = (struct Node*)malloc(sizeof(struct Node));
p1->data = 2*i+n;
p2->next = p1;
p2 = p1;
}
p2->next = NULL;
return head;
}
//合并链表
struct Node *merge(struct Node *p1, struct Node *p2)
{
struct Node *p,*head;
//从两个链表中确定一个头节点
if(p1->data < p2->data)
{
head = p = p1;
p1 = p1->next;
}
else
{
head = p = p2;
p2 = p2->next;
}
//合并后面的节点
while(p1 != NULL && p2 != NULL)
{
if(p1->data < p2->data)
{
p->next = p1;
p = p1;
p1 = p1->next;
}
else
{
p->next = p2;
p = p2;
p2 = p2->next;
}
}
//处理剩余的节点
if(p1 != NULL)
{
p->next = p1;
}
else
{
p->next = p2;
}
return head;
}
void main()
{
struct Node *p1,*p11,*p2,*p22,*p3;
//创建链表
p11 = p1 = create(1,5);
p22 = p2 = create(0,3);
printf("链表1初始数据:\n");
while(p1)
{
printf("%d\n", p1->data);
p1 = p1->next;
}
printf("\n链表2初始数据:\n");
while(p2)
{
printf("%d\n", p2->data);
p2 = p2->next;
}
printf("\n两个链表合并后的数据:\n");
p3 = merge(p11,p22);
while(p3)
{
printf("%d\n", p3->data);
p3 = p3->next;
}
}
分享到:
相关推荐
两个有序链表的合并pta本文详细介绍了合并两个有序链表的算法原理、实现步骤、代码示例以及性能分析。通过掌握这一算法,我们可以更加高效地处理有序链表数据,提高程序的性能和可靠性。未来,随着数据规模的扩大和...
数据结构之合并两个有序链表PPT动画演示
合并两个有序链表.md
c语言链表的基本操作 c语言链表的基本操作之合并两个有序链表
合并两个有序链表(java代码).docx
示例 2:输出:[]示例 3:输出:[]* Definition for singly-linked list.//以合并两个有序链表为基础ListNode*
主要介绍了c++ 如何合并两个有序链表,帮助大家更好的理解和学习C++,感兴趣的朋友可以了解下
主要介绍了Python实现合并两个有序链表的方法,涉及Python操作链表节点的遍历、判断、添加等相关操作技巧,需要的朋友可以参考下
c语言 c语言_c语言编程基础之leetcode题解第21题合并两个有序链表
c++ c++_c++编程基础之leetcode题解第21题合并两个有序链表
21. 合并两个有序链表瞎写的不带头结点的方法def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> Li
本文实例讲述了JS实现的合并两个有序链表算法。分享给大家供大家参考,具体如下: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4...
当提到“两个有序链表的合并PTA”时,这通常意味着在PTA平台上解决一个特定的问题,即合并两个有序链表。具体任务可能是给定两个已按升序排序的链表,要求编写代码来合并这两个链表,形成一个新的有序链表。
何将两个有序链表并为一个有序链表。
两个有序链表的合并pta
# 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 # 示例: # 输入:1->2->4, 1->3->4 # 输出:1->1->2->3->4->4
两个有序链表的合并pta 解法1:迭代思路:首先创建一个 pre_head 节点,并用 cur 指针指向它,这个 pre_head 用于之后指向 list1 和 list2 中的第一个节点,而不是指向新生成的节点,因此空间复杂度为O(1)。接下来...
两个有序链表的合并pta