数据结构与算法题目集
Parzivval
。
展开
-
6-5 链式表操作集
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 stru...原创 2018-11-09 11:27:58 · 478 阅读 · 0 评论 -
6-9 先序建树层次遍历
6-9 先序建树层次遍历 (25 分)编写程序,要求实现(1)按先序遍历序列建立二叉树的二叉链表;(2)按层次遍历二叉树。构成二叉链表的结点类代码如下:class BtNode{ char data; BtNode lchild,rchild;}按加入空树信息的先序遍历序列建立二叉树的二叉链表代码提供如下://先序遍历序列建立二叉链表public static B...原创 2018-11-19 21:06:36 · 804 阅读 · 0 评论 -
7-41 PAT排名汇总
7-41 PAT排名汇总 (25 分)计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试...原创 2018-12-12 15:15:44 · 459 阅读 · 0 评论 -
7-37 模拟EXCEL排序
7-37 模拟EXCEL排序 (25 分)Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。输入格式:输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性...原创 2018-12-12 16:46:50 · 392 阅读 · 0 评论 -
7-47 打印选课学生名单
7-47 打印选课学生名单 (25 分)假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,...原创 2018-12-12 20:04:33 · 346 阅读 · 0 评论 -
6-10 二分查找
6-10 二分查找 (20 分)本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSI...原创 2018-12-03 20:48:24 · 205 阅读 · 0 评论 -
6-11 先序输出叶结点
6-11 先序输出叶结点 (15 分)本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ Eleme...原创 2018-12-03 20:49:10 · 827 阅读 · 0 评论 -
6-12 二叉搜索树的操作集
6-12 二叉搜索树的操作集 (30 分)本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );Positio...原创 2018-12-06 21:36:04 · 148 阅读 · 0 评论 -
6-13 快速排序
快速排序 (10 分)本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。函数接口定义:int Partition ( SqList L,int low, int high );其中L是待排序表,使排序后的数据从小到大排列。类型定义:typedef int KeyType;typedef struct { ...原创 2018-12-10 20:08:38 · 5613 阅读 · 0 评论 -
6-14 邻接矩阵存储图的深度优先遍历
邻接矩阵存储图的深度优先遍历 (20 分)试实现邻接矩阵存储图的深度优先遍历。函数接口定义:void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );其中MGraph是邻接矩阵存储的图,定义如下:typedef struct GNode *PtrToGNode;struct GNode{ int Nv; ...原创 2018-12-17 21:13:04 · 1072 阅读 · 0 评论 -
6-15 图的深度遍历-邻接表实现
图的深度遍历-邻接表实现(10 分)本题要求实现邻接表存储图的深度优先遍历。函数接口定义:void DFS(ALGraph *G,int i);其中ALGraph是邻接表存储的图,定义如下:#define MAX_VERTEX_NUM 10 /*定义最大顶点数*/typedef int Vertex;typedef struct ArcNode{ ...原创 2018-12-17 21:22:10 · 1729 阅读 · 1 评论 -
6-16 邻接表存储图的广度优先遍历
邻接表存储图的广度优先遍历(20 分)试实现邻接表存储图的广度优先遍历。函数接口定义:void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */typedef struct AdjVNode *PtrToAdjVNode; struct A...原创 2018-12-17 21:25:03 · 1542 阅读 · 0 评论 -
6-11 先序输出叶结点
6-11 先序输出叶结点 (15 分)本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ Eleme...原创 2018-11-19 20:20:13 · 153 阅读 · 0 评论 -
7-29 修理牧场
7-29 修理牧场 (25 分)农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头...原创 2018-11-23 22:50:01 · 263 阅读 · 0 评论 -
7-23 还原二叉树
7-23 还原二叉树 (25 分)给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:...原创 2018-11-23 22:24:29 · 153 阅读 · 0 评论 -
6-7 在一个数组中实现两个堆栈
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堆栈数组...原创 2018-11-06 22:14:58 · 208 阅读 · 0 评论 -
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结构定义如下:...原创 2018-11-04 11:25:45 · 409 阅读 · 0 评论 -
6-1 单链表逆转
单链表逆转 (20 分)本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一...原创 2018-11-04 09:53:32 · 221 阅读 · 0 评论 -
6-3 求链式表的表长
6-3 求链式表的表长 (10 分)本题要求实现一个函数,求链式表的表长。函数接口定义:int Length( List L );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToL...原创 2018-11-06 22:40:52 · 501 阅读 · 0 评论 -
6-4 链式表的按序号查找
6-4 链式表的按序号查找 (10 分)本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNod...原创 2018-11-06 22:41:41 · 270 阅读 · 0 评论 -
6-6 带头结点的链式表操作集
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 );...原创 2018-11-10 11:42:29 · 228 阅读 · 0 评论 -
7-3 Pop Sequence
Pop Sequence (25 分)Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are supposed to tell if a given sequence of numbers is a po...原创 2018-10-21 21:03:21 · 350 阅读 · 0 评论 -
6-8 求二叉树高度
6-8 求二叉树高度 (20 分)本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree ...原创 2018-11-12 14:43:10 · 200 阅读 · 0 评论 -
6-9 二叉树的遍历(递归)
6-9 二叉树的遍历 (25 分)本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );...原创 2018-11-12 15:26:13 · 289 阅读 · 0 评论 -
6-9 二叉树的遍历(非递归)
6-9二叉树的遍历(25 分)本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );...原创 2018-11-12 16:40:43 · 444 阅读 · 0 评论 -
7-3 树的同构
7-3 树的同构 (25 分)给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。 图1图2现给定两棵树,请你判断它们是否是同构的。 输入格式:输入给出2棵二叉树树的信息。对于每棵树,首...原创 2018-11-20 15:51:53 · 252 阅读 · 0 评论 -
7-1 重排链表
7-1 重排链表 (25 分)给定一个单链表 L1→L2→⋯→Ln−1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln−1→L2→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (≤105)。结点的地...原创 2019-02-25 09:32:56 · 1247 阅读 · 0 评论