• 定义两个指针,分别指向两个链表的头结点,在两个链表都不为空时,

    • 比较两个链表结点的值的大小。
    • 若链表l1的节点大于l2的节点,则将l1的节点值赋值给l3。l1的指针指向下一个节点。
    • 反之,则则将l2的节点值赋值给l3。l2的指针指向下一个节点。
  • 两个链表出现一个为空时,判断哪个不为空,将该链表剩下的节点全部赋值给l3。

图解

代码

#include <stdio.h>
#include <malloc.h>//构造结构体
typedef struct list
{
int data;
struct list *next;
}*List,LNode;//函数声明
List init_list(List head,int num);
void print_list(List head);
List merge(List l1,List l2);void main()
{
List l,l1,l2;
l1 = (LNode*)malloc(sizeof(LNode));
l1 = init_list(l1,3);
l2 = (LNode*)malloc(sizeof(LNode));
l2 = init_list(l2,7);
l = merge(l1,l2);
print_list(l);}//两个有序链表合并函数
/*
List merge(List l1,List l2)
{
List head,p,s;
head = (List)malloc(sizeof(LNode));
p = head;
while(l1 != NULL && l2 != NULL)
{
s = (List)malloc(sizeof(LNode));
if(l1->data > l2->data)
{
s ->data = l2->data;
l2 = l2->next;
}else{
s ->data = l1->data;
l1 = l1->next;
}
s->next = NULL;
p->next = s;
p = p->next;
}
while(l1 != NULL)
{
s = (List)malloc(sizeof(LNode));
s->data = l1->data;
l1 = l1->next;
s->next = NULL;
p->next = s;
p = p->next;
}
while(l2 != NULL)
{
s = (List)malloc(sizeof(LNode));
s->data = l2->data;
l2 = l2->next;
s->next = NULL;
p->next = s;
p = p->next;
}
return head->next;
}
*///两个有序链表合并函数优化
List merge(List l1,List l2)
{
List head,p,s;
head = (List)malloc(sizeof(LNode));
p = head;
while(l1 != NULL || l2 != NULL)
{
s = (List)malloc(sizeof(LNode));
if(l1 != NULL && l1->data <= l2->data)
{
s ->data = l1->data;
l1 = l1->next;
}else{
s ->data = l2->data;
l2 = l2->next;
}
s->next = NULL;
p->next = s;
p = p->next;
}
return head->next;
}//链表初始化函数
List init_list(List head,int num)
{
int i = 1;
List p = head;
while(i <= num)
{
List s;
s = (LNode*)malloc(sizeof(LNode));
s->data = i * num;
s->next = NULL;
p->next = s;
p = p->next;
i++;
}
return head->next;
}//链表输出函数
void print_list(List head)
{
List p;
p = head;
while(p != NULL)
{
printf("%d ",p->data);
p = p->next;
}
printf("n");
}

两个list关联合并_算法分享---两个有序链表的合并(C语言)相关推荐

  1. c语言实现两个有序链表的合并(代码示例)

    c语言实现两个有序链表的合并: 现有两个有序单链表,通过代码实现将两个单链表合并为一个有序的新表,要求使用旧表的空间,不能新分配内存 #include #include typedef struct ...

  2. c语言将两个有序表合并为一个有序表,c语言实现两个有序链表的合并(代码示例)...

    本篇文章通过代码示例介绍一下使用c语言合并两个有序链表的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 教程推荐:<c语言教程视频> c语言实现两个有序链表的合并 ...

  3. 数据结构——有序链表的合并,链表实现一元多项式相加

    1.有序链表的合并 void Connect(LinkList a, LinkList b, LinkList& c) {LNode* pa, * pb, * pc;//三个结点指针pa = ...

  4. 两个链接合并_如何找到两个链接列表的合并点

    两个链接合并 了解问题 (Understand the Problem) We are given two singly linked lists and we have to find the po ...

  5. c++两个vector合并_这才是真正的 Git——分支合并

    本文作者:lzaneli,腾讯 TEG 前端开发工程师 "合并前文件还在的,合并后就不见了"."我遇到 Git 合并的 bug 了" 是两句经常听到的话,但真的 ...

  6. java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...

    前几天写了简单的从页面对数据库进行的操作,下面对该功能进行升级,操作两张相关联的表:上次是对新闻类型的修改,我在这里就不重复了,可以查看我之前的博客, 首先从页面说起: 页面部分: 页面部分我用了10 ...

  7. 如何将两个集合合并_如何将剪切的音频文件进行合并

    下面就和大家一起来学习如何将音频文件剪切为多个片段再重新合并在一起.剪辑所用的音频转换器有很多,但是得找到一款合适自己的,下面小编就来为大家讲解一种方法. 使用工具: 音频转换器https://www ...

  8. 合并两个有序链表 java_合并两个有序链表

    将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. /*** Definition for singly-linked list.* struct ListN ...

  9. python数组和链表的区别_算法图解2 - 数组和链表

    原标题:算法图解2 - 数组和链表 我们继续上文的脚步,深入了解一下数组和链表.掌握它们之间的区别和联系,以及各自的使用场景,为后续的算法学习打好基础. 一.计算机内存的工作原理 为了更好的理解数组和 ...

最新文章

  1. 队列在多线程中的应用
  2. [Array]Pascal's Triangle II
  3. redis 中一个字段 修改map_Redis bitmap 位图 从入门到精通 基础 实战 妙用
  4. matlab语音信号分析实验报告,DSP实验二 语音信号分析与处理,南京理工大学紫金学院实验报告,信号与系统...
  5. matlab gui学习手记_MATLAB论坛不可错过的30例GUI源代码
  6. 腾讯云坚持“云+数据库”转型,看好多模数据库未来发展
  7. 修改typora设置能够配对latex行间公式$ $
  8. 电子相册系统(三)使用技术
  9. 微信小程序 布局对齐属性
  10. 微信公众号一次性订阅消息功能开发实践
  11. flink本地运行及访问webui
  12. 浙大毕业演讲 --- 马一浮
  13. 乐乐音乐播放器 功能介绍(一)
  14. 数据结构:并查集和图
  15. matlab飞机大战小游戏(第二版)
  16. [论文分享] Overcoming Catastrophic Forgetting in Incremental Few-Shot Learning by Finding Flat Minima
  17. Spring框架基础学习小结。概念,文件配置
  18. matlab之ARMA(p,q)模型
  19. JVM上篇_15-垃圾回收相关算法_尚硅谷
  20. cinta作业7:同态同构商群正规子群

热门文章

  1. 基于节拍谱的语音音乐分类模型
  2. Cygwin复制,粘贴 直接用鼠标在黑框上选区即可,选区结束就已经复制了。cygwin里面Ctrl+V是不能粘贴的,用Shfit+ Insert(键盘上下左右方向键的上面) Cygwin 下切换目
  3. ubuntu 14.04 安装qq 2015
  4. 深入理解内存(3):内存交换技术,虚拟内存
  5. 科大星云诗社动态20210124
  6. 云炬随笔20211011
  7. 云炬随笔20161224
  8. c++ c6386 缓冲区 溢出_Office 远程溢出漏洞测试与分析
  9. javascript一句话技巧
  10. javascript中json格式转为字符串