BJFU-225-基于链表的两个递增有序序列的合并
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode{
int num;
struct Lnode * next;
}Lnode,*LinkList; typedef struct Link{
LinkList data;
struct Link * next;
}Link,*List;
void creatList(LinkList &L,int n)
{
L = (LinkList)malloc(sizeof(Lnode));
L->next = NULL;
LinkList rear = L; for(int i=;i<=n;i++)
{
LinkList p = (LinkList)malloc(sizeof(Lnode)); scanf("%d",&p->num);
rear->next = p;
p->next = NULL;
rear = p;
}
}
void traverse(LinkList L)
{
LinkList p = L->next;
while(p)
{
if(p->next==NULL)
{
printf("%d",p->num);//最后一个数字的输出不能有空格,不然编译通不过。不要问我为什么!!!
}else{
printf("%d ",p->num);
} p = p->next;
}
printf("\n");
}
LinkList mergeList(LinkList La,LinkList Lb,int n,int m)
{
LinkList Lc,a,b,c;
Lc = La;
a = La->next;
b = Lb->next;
c = Lc; while(a&&b)
{
if(a->num > b->num)
{
c->next = b;
c = b;
b = b->next;
}else if(a->num==b->num)
{
LinkList q = b;
c->next = a;
c = a;
a = a->next;
b = b->next;
free(q);
}else
{
c->next = a;
c = a;
a = a->next;
}
} c->next = a?a:b;
free(Lb);
return Lc;
}
int main()
{
int n,m; List Lc = (List)malloc(sizeof(Link));
List r = Lc;
while()
{
scanf("%d%d",&n,&m);
if(n==&&m==) break;
LinkList La,Lb;
creatList(La,n);
creatList(Lb,m); List pc = (List)malloc(sizeof(Link));
LinkList Lc = mergeList(La,Lb,n,m);
pc->data = Lc;
r->next = pc;
r = pc;
pc->next = NULL; }
List p = Lc->next;
while(p)
{
traverse(p->data);
p = p->next;
}
}
BJFU-225-基于链表的两个递增有序序列的合并的更多相关文章
- PAT 02-线性结构1 两个有序链表序列的合并 (15分)
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列. 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef ...
- 阻塞队列 - java基于链表的简单实现
1.阻塞队列的原理 阻塞队列与普通队列的区别在于:阻塞队列为空时,从队列中获取元素的操作将会被阻塞,当队列为满时,往队列里添加元素的操作会被阻塞. 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其 ...
- 6.2 集合和映射--集合Set->底层基于链表实现
在6.1中我们实现了底层基于二叉搜索树的集合,本节就底层如何基于链表实现进行学习,注意:此处的链表是之前自己封装的. 1.集合set相关功能 1.1 add()的不同 用于链表本身没有去重的效果,因此 ...
- 基于链表的C语言堆内存检测
说明 本文基于链表实现C语言堆内存的检测机制,可检测内存泄露.越界和重复释放等操作问题. 本文仅提供即视代码层面的检测机制,不考虑编译链接级的注入或钩子.此外,该机制暂未考虑并发保护. 相关性文章参见 ...
- 02-线性结构1 两个有序链表序列的合并(15 point(s)) 【链表合并】
02-线性结构1 两个有序链表序列的合并(15 point(s)) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L ...
- 聊聊高并发(三十二)实现一个基于链表的无锁Set集合
Set表示一种没有反复元素的集合类,在JDK里面有HashSet的实现,底层是基于HashMap来实现的.这里实现一个简化版本号的Set,有下面约束: 1. 基于链表实现.链表节点依照对象的hashC ...
- PTA 两个有序链表序列的合并
6-5 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...
- java环境中基于jvm的两大语言:scala,groovy
一.java环境中基于jvm的两大语言:scala,groovy 可以在java项目里混编这两种语言: scala:静态语言,多范式语言,糅合了面向对象.面向过程:可以与java和net互操作:融汇了 ...
- lintcode:交换链表当中两个节点
题目 给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点.保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做. 注意事项 你需要交换两个节点而不是改变节点的权值 ...
随机推荐
- uni-app采坑记录
1. uni-app采坑记录 1.1. 前言 这里记录下uni-app实践中踩的坑 1.2. 坑点 1.2.1. 触发事件@longTap和@longpress 这两个都表示长按触发事件,那么这两个有 ...
- Vue.js最佳实践--给大量子孙组件传值(provide/inject)
开发中有个需求,有个Parent组件(例如div)下,输入框,下拉框,radiobutton等可编辑的子孙组件几百个,根据某个值统一控制Parent下面的所有控件的disabled状态 类似于这样,给 ...
- 面试题:java中String为什么要设置成final
1.不可改变---执行效率高 2.因为String这个对象基本是被所有的类对象都会使用的到了,如果可以被复写,就会很乱套,比如map的key ,如果是一个string为key的话,String如果可以 ...
- JS高阶---数据、变量、内存
[一]基础 (1)什么是数据? 存储在内存里 代表特定信息 本质为0101,二进制数据 (2)什么是内存? 内存条通电后产生的可存储数据的空间(临时的) 拓展: 1.2种数据 2.内存分类--栈和堆 ...
- 使用BCP从Sybase远程数据库中导出数据
1.在本机安装Sybase ASE 15,我装的开发版全套,懒得去仔细看需要哪个了 2.在Sybase安装目录里找到ini\sql.ini,在里面添加数据源例如: [MYDS] master=NLWN ...
- 201871010121-王方《面向对象程序设计(Java)》第四周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- qhclass
http://www.qhclass.com/classroom/62/courses
- linux学习18 shell脚本基础-bash变量和逻辑运行
一.回顾 1.用户管理,权限管理,install,mktemp 2.用户管理: 3.权限管理: mode,ownership mode: user group other r w x 4.命令:ins ...
- Pandas | 27 注意事项&窍门
警告和疑难意味着一个看不见的问题.在使用Pandas过程中,需要特别注意的地方. 与Pandas一起使用If/Truth语句 当尝试将某些东西转换成布尔值时,Pandas遵循了一个错误的惯例. 这种情 ...
- linux脚本中有source相关命令时的注意事项
写这个问题起因是因为一个同学去的java一键脚本环境变量设置问题, [root@localhost u01]# more 1.sh #!/bin/bash grep -q "export J ...