02-线性结构1 两个有序链表序列的合并 (15分)
来源:互联网 发布:淘宝设计工作室好做吗 编辑:程序博客网 时间:2024/04/30 06:53
函数接口定义:
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合并为一个递增的整数序列。应直接使用原序列中的结点,返回归并后的链表头指针。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Read(); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表;空链表将输出NULL */
List Merge( List L1, List L2 );
int main()
{
List L1, L2, L;
L1 = Read();
L2 = Read();
L = Merge(L1, L2);
Print(L);
Print(L1);
Print(L2);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
3
1 3 5
5
2 4 6 8 10
输出样例:
1 2 3 4 5 6 8 10
NULL
NULL
编译器:gcc
时间限制:400ms
内存限制:64MB
代码长度限制:16kB
判题程序:系统默认
作者:DS课程组
单位:浙江大学
题目判定
解题程序
对于这道题,我实在不知道说什么好了...也许是一直刷题的影响吧,程序一敲好,就立马 复制,粘贴 提交,根本不好好读题,看清楚这道题是让你干啥!!!
只要求你写合并函数就好了!!!
List Merge( List L1, List L2 );
就只提交这个函数的代码即可! 苦逼的我在确认代码无误后狂交了N+N次,才发现,原来之提交那么一丁点儿,注意的是你所用的变量名称要对的上他写的那一部分代码!
然后:附上我的代码吧。。。
#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List Read(); /* 细节在此不表 (也就是说提交的时候可以不考虑,不过还是要写的!) */void Print( List L ); /* 细节在此不表;空链表将输出NULL (同上)*/List Merge( List L1, List L2 );int main(){ List L1, L2, L; L1 = Read(); L2 = Read(); L = Merge(L1, L2); Print(L); Print(L1); Print(L2); return 0;}/* 你的代码将被嵌在这里 */List Read(){ int n; scanf("%d",&n); List L=(List)malloc(sizeof(PtrToNode)); ///申请一个头结点 L->Next = NULL; ///头指针为空 if(n) ///当n不是0时 { List r=L; ///r是一个中间变量的节点 for(int i=0;i<n;i++) { List p=(List)malloc(sizeof(struct Node)); scanf("%d",&(p->Data)); ///尾插法 r->Next = p; r = p; } r->Next = NULL; } return L;}void Print( List L ){ List p=L->Next; if(p) { List r; r = L; while(r->Next) { r = r->Next; printf("%d ",r->Data); } } else { printf("NULL"); } printf("\n");}List Merge( List L1, List L2 ) ///合并函数 重点要写的函数!{ List pa,pb,pc,L; L = (List)malloc(sizeof(struct Node)); pa=L1->Next; pb=L2->Next; pc = L; while(pa && pb) { if(pa->Data <= pb->Data) { pc->Next = pa; pc = pa; pa = pa->Next; } else { pc->Next = pb; pc = pb; pb = pb->Next; } } pc->Next = pa ? pa : pb; L1->Next = NULL; L2->Next = NULL; return L;}
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- PTA 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- PAT数据结构_02-线性结构1 两个有序链表序列的合并 (15分)
- [PTA] 线性结构1 两个有序链表序列的合并(15 分)
- 02-线性结构1 两个有序链表序列的合并 (15分) (单向链表)
- 02-线性结构1 两个有序链表序列的合并 (15分)
- HTML+CSS基础 img标签显示一个与html文件同目录下的图片
- swift ios开发遇到的坑
- Leetcode:Add two Numbers
- ARMv8 异常处理源码入口
- Lambda表达式的例子
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 笔试算法学习--链表相关
- springMvc总结
- Material Design入门(下)
- 赛码解题报告(六)
- LeetCode 15. 3Sum
- 错误,调试和测试
- 最前沿:深度增强学习再发力,家用机器人已近在眼前
- c++ 内存模型