文档章节

将两个非递减的有序链表合并为一个非递增的有序链表(C语言编程实现)

志强朱
 志强朱
发布于 2016/05/08 17:43
字数 406
阅读 549
收藏 0

将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。

#include<stdio.h>
#include<malloc.h> 
typedef  struct list {  
    int data;  
    struct list * next;  //下一个节点地址   
}list;  
//第一条链表 
struct list * L=NULL;//头
struct list * head=NULL;//首
struct list * p=NULL;  
//第二条链表
struct list * L1=NULL;//头
struct list * head1=NULL;//首
struct list * p1=NULL; 
//代理链表
struct list * L2=NULL;//头
struct list * q=NULL;
int main(){
	int i=0,length;
	printf("请输入链表的长度\n");
	scanf("%d",&length); 
	head=(struct list *)malloc(sizeof(struct  list)); 
	L=head;
	printf("请依次输入链表的内容\n");
	for(i;i<length;i++){
		p = (struct list *)malloc(sizeof(struct  list));
        scanf("%d",&p->data);
        p->next=NULL;
        head->next=p;
        head=p;
    }
    int i1=0,length1;
	printf("请输入链表的长度\n");
	scanf("%d",&length1);
	 
	head1=(struct list *)malloc(sizeof(struct  list)); 
	L1=head1;
	printf("请依次输入链表的内容\n");
	for(i1;i1<length1;i1++){
		p1= (struct list *)malloc(sizeof(struct  list));
        scanf("%d",&p1->data);
        p1->next=NULL;
        head1->next=p1;
        head1=p1;
    }
    p=L->next;//得到首原节点 
	p1=L1->next;//得到首原节点
	L2=(struct list *)malloc(sizeof(struct  list));
    L2=L;//指向已有链表空间 
    L2->next=NULL;
	q=(struct list *)malloc(sizeof(struct  list));
	//循环里主要是 头插法原理 
	while(p||p1){
		if(!p){
			q=p1;
			p1=p1->next;
		}
		else if(!p1){
		    q=p;
			p=p->next;	
		}else if(p->data<=p1->data){
			q=p;
			p=p->next;
		}else{
			q=p1;
			p1=p1->next;
		}
	    q->next = L2->next;   
        L2->next=q; 
	}
	free(L1); 
    p=L2->next;
    while(p){
	printf("%d ",p->data);
	p=p->next;
	}
}


© 著作权归作者所有

志强朱
粉丝 5
博文 209
码字总数 108290
作品 0
郑州
程序员
私信 提问
Android 面试文档分享

一、概述 最近在准备面试的东西,整理了一些读书笔记分享给各位 百度网盘地址,大家可以自由下载,以下内容完全原创。 前两部分是对于一些 经典书籍的读书笔记 和 面试题,都是上学看书的时候...

泽毛
2017/11/10
0
0
合并N个有序链表与FQ公平调度

下大雨了,于是就想表达一些只有下雨才能表达的东西。夜半酒酣惊觉起,使我流泪忆江南…前天晚上下班带着小小在暴雨中狂奔,非常舒服,其实也算是流言终结者吧。反驳一下几千年来在我国北方通...

dog250
2018/05/09
0
0
链表面试题(上)

一、题目 1、从尾到头打印单链表 (有四种方法) 2、删除一个无头单链表的非尾节点(不能遍历链表) 3、在无头单链表的一个节点前插入一个节点(不能遍历链表) 4、单链表实现约瑟夫环(Joseph...

qq_38646470
2018/01/04
0
0
经典算法学习——合并两个有序链表

类似的,合并两个有序的数组或者链表也是剑指Offer中的经典题型。题目描述如下:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的。我这里以合并链表来实现。...

chenyufeng1991
2016/08/21
0
0
经典链表练习题(1)

问题: 从尾到头打印单链表 删除一个无头单链表的非尾节点(不能遍历链表) 在无头单链表的一个节点前插入一个节点(不能遍历链表) 单链表实现约瑟夫环(JosephCircle) 逆置/反转单链表 单链...

triorwy
2018/01/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
20
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
9
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
17
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部