BJFU-225-基于链表的两个递增有序序列的合并
2024-09-02 13:45:32
#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;
}
}
最新文章
- OpenCASCADE DataExchange DWG
- ASP.NET中进行消息处理(MSMQ) 二(转)
- dom相关指令
- DataFrame转矩阵Np-Array
- 23个.NET开源项目
- nginx fastcgi buffers影响页面输出数据大小记录
- UVA 674 Coin Change(dp)
- BZOJ 1486: [HNOI2009]最小圈( 二分答案 + dfs判负圈 )
- 【AngularJS】 2.0 版本发布
- 洛谷 P3038 [USACO11DEC]牧草种植Grass Planting(树链剖分)
- mysql中binlog与存储引擎的2PC
- 图解Tomcat类加载机制(阿里面试题)
- es6 语法 (数组扩展)
- Linux中通过Socket文件描述符寻找连接状态介绍
- HDU2389(KB10-F 二分图最大匹配Hopcroft_Karp)
- window下安装RabbitMQ
- 如何用简单例子讲解 Q - learning 的具体过程?
- 香蕉派 banana pi BPI-M3 八核开源硬件开发板
- poj2479 Maximum sum
- sublime_Text3中snippet设置信息头(包括作者、日期)