[PAT] 02-线性结构1 两个有序链表序列的合并
来源:互联网 发布:淘宝网店简要策划方案 编辑:程序博客网 时间:2024/05/16 07:17
[PAT] 02-线性结构1 两个有序链表序列的合并
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列
函数接口定义:
List Merge( List L1, List L2 );
其中List
结构定义如下:
typedef struct Node *PtrToNode;struct Node {ElementType Data; /* 存储结点数据 */PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */
L1
和L2
是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge
要将L1
和L2
合并为一个递增的整数序列。应直接使用原序列中的结点,返回归并后的链表头指针。
输入案例:
31 3 552 4 6 8 10
输出案例:
1 2 3 4 5 6 8 10NULLNULL
由于题目只要求写一个函数,裁判测试程序样例部分函数体没有给出,因此我直接将整个程序完整代码写到这里。
C语言实现:
#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List Read()/* 细节在此不表 */{ int n; List P,rear,t; scanf("%d",&n); P = (PtrToNode)malloc(sizeof(struct Node)); P->Next = NULL; rear = P; while(n--){ t = (PtrToNode)malloc(sizeof(struct Node)); scanf("%d",&(t->Data)); t->Next = NULL; rear->Next = t; rear = t; } t = P; P = P->Next; free(t); return P;}void Print( List L ) /* 细节在此不表;空链表将输出NULL */{ int flag = 0; if(!L){ printf("NULL"); }else{ while(L){ if(!flag){ flag = 1; }else{ printf(" "); } printf("%d",L->Data); L = L->Next; } } printf("\n");}List Merge( List *L1, List *L2 ){ List L,rear,t; L = (List)malloc(sizeof(struct Node)); L->Next = NULL; rear = L; while(*L1){ while(*L2){ if((*L2)->Data > (*L1)->Data ){ rear->Next = *L1; rear = *L1; *L1 = (*L1)->Next; rear->Next= NULL; break; }else{ rear->Next= *L2; rear = *L2; *L2 = (*L2)->Next; rear->Next= NULL; break; } } } if(*L1){ rear->Next = *L1; while(*L1) *L1 = (*L1)->Next; } if(*L2){ rear->Next = *L2; while(*L2) *L2 = (*L2)->Next; } t = L; L = L->Next; free(t); return L;}int main(){ List L1, L2, L; L1 = Read(); L2 = Read(); L = Merge(&L1, &L2); Print(L); Print(L1); Print(L2); return 0;}
1 0
- [PAT] 02-线性结构1 两个有序链表序列的合并
- PAT数据结构_02-线性结构1 两个有序链表序列的合并 (15分)
- 线性结构 1 两个有序链表序列的合并
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并
- 02-线性结构1 两个有序链表序列的合并
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并
- 02-线性结构1 两个有序链表序列的合并
- PTA 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- [数据结构]02-线性结构1 两个有序链表序列的合并
- 02-线性结构1两个有序链表序列的合并
- 02-线性结构1 两个有序链表序列的合并【链表】
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- iOS 强制屏幕旋转
- svn如何查看修改记录
- sap内表 table_LINE
- bucardo 安装配置
- Linux服务管理
- [PAT] 02-线性结构1 两个有序链表序列的合并
- 6.33
- 如何在自己的应用中打开支付宝客户端
- 其他面试习题汇总
- iOS开发-Xcode8兼容iOS7手记
- oracle基本建表语句
- mysql查询数据库某个表的所有字段及字段的长度及是否为空
- 图片饱和度,色相,亮度调整
- oracle控制文件的备份和恢复以及丢失后的各种情况