![](https://img-blog.csdnimg.cn/20210126210106439.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法题目集(中文)
pta题目集解析
Tropine
这个作者很懒,什么都没留下…
展开
-
目录
写在前面本专栏是2021年寒假针对PTA上 数据结构与算法题目集(中文) 的解题记录。题目集链接目录持续更新ing6-1 单链表逆转 (20分)6-2 顺序表操作集 (20分)6-3 求链式表的表长 (10分)6-4 链式表的按序号查找 (10分)6-5 链式表操作集 (20分)6-6 带头结点的链式表操作集 (20分)6-7 在一个数组中实现两个堆栈 (20分)6-8 求二叉树高度 (20分)6-9 二叉树的遍历6-10 二分查找 (20分)6-11 先序输出叶结点 (15分)原创 2021-01-28 09:59:33 · 94 阅读 · 0 评论 -
6-1 单链表逆转 (20分)
6-1 单链表逆转 (20分)本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */L是给定单链表,函原创 2021-01-26 21:02:05 · 158 阅读 · 0 评论 -
6-2 顺序表操作集 (20分)
6-2 顺序表操作集 (20分)本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct原创 2021-01-26 23:31:25 · 334 阅读 · 0 评论 -
6-3 求链式表的表长 (10分)
6-3 求链式表的表长 (10分)本题要求实现一个函数,求链式表的表长。函数接口定义:int Length( List L );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数Length要返回链式表的长度。裁判测试程序样例:#include <st原创 2021-01-26 23:36:08 · 233 阅读 · 0 评论 -
6-4 链式表的按序号查找 (10分)
6-4 链式表的按序号查找 (10分)本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数FindKth要返回链式表的第K个原创 2021-01-26 23:46:55 · 224 阅读 · 0 评论 -
6-5 链式表操作集 (20分)
6-5 链式表操作集 (20分)本题要求实现链式表的操作集。函数接口定义:Position Find( List L, ElementType X );List Insert( List L, ElementType X, Position P );List Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; P原创 2021-01-27 12:05:50 · 153 阅读 · 0 评论 -
6-6 带头结点的链式表操作集 (20分)
6-6 带头结点的链式表操作集 (20分)本题要求实现带头结点的链式表操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode {原创 2021-01-27 14:59:05 · 142 阅读 · 0 评论 -
6-7 在一个数组中实现两个堆栈 (20分)
6-7 在一个数组中实现两个堆栈 (20分)本题要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize );bool Push( Stack S, ElementType X, int Tag );ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:typedef int Position;struct SNode { Elem原创 2021-01-27 15:21:34 · 152 阅读 · 0 评论 -
6-8 求二叉树高度 (20分)
6-8 求二叉树高度 (20分)本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};要求函数返回给定二叉树BT的高度值。裁判测试程序样例:#inclu原创 2021-01-27 15:40:18 · 226 阅读 · 0 评论 -
6-9 二叉树的遍历
6-9 二叉树的遍历 (25分)本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Pos转载 2021-01-27 16:07:10 · 150 阅读 · 0 评论 -
6-10 二分查找 (20分)
6-10 二分查找 (20分)本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};L是用户传入的一个线性表,其原创 2021-01-27 16:05:16 · 140 阅读 · 0 评论 -
6-11 先序输出叶结点 (15分)
6-11 先序输出叶结点 (15分)本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};函数Preorder原创 2021-01-26 21:03:01 · 361 阅读 · 0 评论 -
7-1 最大子列和问题 (20分)
7-1 最大子列和问题 (20分)给定K个整数组成的序列{ N1N_1N1, N2N_2N2, …, NKN_KNK },“连续子列”被定义为{ NiN_iNi, Ni+1N_{i+1}Ni+1, …, NjN_jNj },其中 1 ≤ i ≤ j ≤ K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨在测试各种原创 2021-01-28 09:51:09 · 248 阅读 · 0 评论 -
7-5 堆中的路径 (25分)
7-5 堆中的路径 (25分)将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346 2原创 2021-01-28 15:16:29 · 213 阅读 · 0 评论 -
7-9 旅游规划 (25分)
7-9 旅游规划 (25分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城原创 2021-02-02 12:41:13 · 260 阅读 · 0 评论 -
7-10 公路村村通 (30 分)
7-10 公路村村通 (30 分)现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6 151 2 5原创 2021-02-03 15:21:27 · 183 阅读 · 0 评论 -
7-12 排序 (25分)
7-12 排序 (25分)给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:10310^3103个随机整数;数据4:10410^4104个随机整数;数据5:10510^5105个随机整数;数据6:10510^5105个顺序整数;数据7:10510^5105个逆序整数;数据8:10510^5105个基本有序的整数;数据9:105原创 2021-01-29 02:04:44 · 281 阅读 · 0 评论 -
7-13 统计工龄 (20分)
7-13 统计工龄 (20分)给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入格式:输入首先给出正整数N(≤10510^5105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。输出格式:按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。输入样例:810 2 0 5 7 2 5 2输出样例:0:12:35:27:110:1代码实现(C语言)这道题将年龄范围限定在{0 : 50原创 2021-01-29 02:12:33 · 350 阅读 · 0 评论 -
7-52 两个有序链表序列的交集 (20分)
7-52 两个有序链表序列的交集 (20分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1输出样例:2 5代码实现(C语言)#include <stdio.原创 2021-02-02 00:34:50 · 343 阅读 · 0 评论