两个已经按照从小到大的排序的链表,合并成一个链表,仍然保持从小到大排序(貌似是归并排序里的基本操作)
#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;
}
}
分享到:
相关推荐
数据结构之合并两个有序链表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...
何将两个有序链表并为一个有序链表。
# 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 # 示例: # 输入:1->2->4, 1->3->4 # 输出:1->1->2->3->4->4
两个有序链表的合并pta
将两个有序的链表合并为一个有序链表,链表的大小是可变的
C++版本将两个有序链表合并为一个新的有序链表并返回原理及代码实现
要合并两个有序链表,可以按照以下步骤进行: 1. 创建一个新的链表作为合并后的结果。 2. 遍历两个有序链表,比较它们的节点值。 3. 每次选择较小的节点值,将其插入到新链表中,并移动指针到下一个节点。 4. 当...
两个有序链表合并 链表插入 删除 修改等