
数据结构笔记
文章平均质量分 67
山东科技大学数据结构课程,学习中做的作业或实验题目整理。
LiuLin_Hao
这个作者很懒,什么都没留下…
展开
-
《数据结构实验》7-19 模拟EXCEL排序 (25分)
7-19 模拟EXCEL排序 (25分)Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。输入格式:输入的第一行包含两个正整数N(≤10e5 ) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性用1个空格隔开。输出格式:在N行中输出按要求排序后的结果,即:当C=1时,按学号递增排序;当C=2时,按姓名的非原创 2020-12-01 19:23:47 · 1595 阅读 · 0 评论 -
第十章作业2--交换类排序与选择类排序
7-3 冒泡法排序 (20分)将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。输入格式:输入在第1行中给出N和K(1≤K<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔。输出格式:原创 2020-11-24 21:00:54 · 246 阅读 · 0 评论 -
第十章作业2--交换类排序与选择类排序
7-1 寻找大富翁 (25分)胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。输入格式:输入首先给出两个正整数N(≤10^6 )和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。数字间以空格分隔。输出格式:在一行内按非递增顺序输出资产排前M位的大富翁的个人资产值。数字间以空格分隔,但结尾不得有多余空格。输入样例:原创 2020-11-24 20:59:09 · 117 阅读 · 0 评论 -
第十章作业1--排序概念与插入排序
7-1 排序 (25分)给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:103个随机整数;数据4:104个随机整数;数据5:105个随机整数;数据6:105个顺序整数;数据7:105个逆序整数;数据8:105个基本有序的整数;数据9:105个随机正整数,每个数字不超过1000。输入格式:输入第一行给出正整数N(≤10^原创 2020-11-24 20:57:48 · 219 阅读 · 0 评论 -
第九章作业1--静态查找表 7-1 两个有序序列的中位数 (25分)
7-1 两个有序序列的中位数 (25分)已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0 ,A1 ,⋯,AN−1 的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。输出格式:在一行中输出两个输入序列的并集序列的中位数。输入样例1:51 3 5 7 92 3 4原创 2020-11-15 11:55:51 · 202 阅读 · 0 评论 -
第七章作业2--图的最小生成树 7-2 畅通工程之最低成本建设问题
7-2 畅通工程之最低成本建设问题 (30分)某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了有可能建设成快速路的若干条道路的成本,求畅通工程需要的最低成本。输入格式:输入的第一行给出城镇数目N (1<N≤1000)和候选道路数目M≤3N;随后的M行,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号(从1原创 2020-11-07 11:25:27 · 529 阅读 · 0 评论 -
第七章作业2--图的最小生成树 7-1 畅通工程之局部最小花费问题 (35分)
第七章作业2–图的最小生成树7-1 畅通工程之局部最小花费问题 (35分)某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。输入格式:输入的第一行给出村庄数目N (1≤N≤100);随后的N(N−1)/2行对应村庄原创 2020-11-03 20:20:33 · 311 阅读 · 0 评论 -
第七章作业1--基本概念-计科19-3-4 6-1 邻接矩阵存储图的深度优先遍历 (20分)
6-1 邻接矩阵存储图的深度优先遍历 (20分)试实现邻接矩阵存储图的深度优先遍历。函数接口定义:void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );其中MGraph是邻接矩阵存储的图,定义如下:typedef struct GNode *PtrToGNode;struct GNode{ int Nv; /* 顶点数 */ int Ne; /* 边数 */ WeightType G[MaxVerte原创 2020-10-28 19:35:54 · 968 阅读 · 0 评论 -
第七章作业1--基本概念-计科19-3-4 6-2 邻接表存储图的广度优先遍历 (20分)
6-2 邻接表存储图的广度优先遍历 (20分)试实现邻接表存储图的广度优先遍历。函数接口定义:void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */typedef struct AdjVNode *PtrToAdjVNode; struct AdjVNode{ Vertex AdjV; /* 邻接点下标 */ PtrToAdjVNo原创 2020-10-28 19:29:28 · 700 阅读 · 0 评论 -
第五章作业 判断上三角矩阵
7-1 判断上三角矩阵 (15分)上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。输入格式:输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。输出格式:每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。输入样例:231 2 30 4 50 0 6原创 2020-10-06 20:26:33 · 449 阅读 · 1 评论 -
第四章作业 最长对称子串
7-1 最长对称子串 (25分)对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:Is PAT&TAP symmetric?输出样例:11Accepted Code#include <stdio.h>#include <原创 2020-10-06 20:22:32 · 247 阅读 · 0 评论 -
第三章作业4--循环队列及线性结构综合 列车调度
7-2 列车调度 (25分)火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N (2 ≤ N ≤105 ),下一行给出从1到N的整数序号的一个重排列。数原创 2020-10-06 20:20:24 · 627 阅读 · 0 评论 -
第三章作业4--循环队列及线性结构综合 银行排队问题之单队列多窗口服务
7-1 银行排队问题之单队列多窗口服务 (25分)假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且统计每个窗口服务了多少名顾客。输入格式:输入第1行给出正整数N(≤1000),为顾客总人数;随后N行,每行给出一位顾客的到达时间T和事务处理时间P,并且假设输入数据已经按到达时间先后排好原创 2020-10-06 20:17:13 · 585 阅读 · 0 评论 -
第三章作业3--队列 银行业务队列简单模拟
7-1 银行业务队列简单模拟 (25分)设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。原创 2020-10-06 20:15:15 · 1390 阅读 · 0 评论 -
第三章作业2-栈及其应用 表达式转换
7-1 表达式转换 (25分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。输入样例:2+3*(7-4)+8/4输出样例:2 3 7 4 - * + 8原创 2020-10-06 20:13:22 · 278 阅读 · 0 评论 -
第三章作业2-栈及其应用 符号配对
7-2 符号配对 (20分)请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。输入样例1:void test(){ int i,原创 2020-10-06 20:12:07 · 491 阅读 · 0 评论 -
第三章作业1--栈 7-2 堆栈操作合法性 (20分)
7-2 堆栈操作合法性 (20分)假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过100。输出格式:对每个序列,在一行中输出YES如果该序列是合法的堆原创 2020-09-28 21:07:40 · 2258 阅读 · 0 评论 -
第三章作业1--栈 7-1 一元多项式求导 (20分)
7-1 一元多项式求导 (20分)设计函数求一元多项式的导数。输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。输入样例:3 4 -5 2 6 1 -2 0输出样例:12 3 -10 1 6 0Accepted Code#include <stdio.h>#include <stdlib.h>#inc原创 2020-09-28 21:04:20 · 998 阅读 · 0 评论 -
第二章作业3-链表(2)6-1 循环单链表区间删除 (15分)
6-1 循环单链表区间删除 (15分)本题要求实现带头结点的循环单链表的创建和单链表的区间删除。L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于max的链表元素。函数接口定义:Status ListCreate_CL(LinkList &CL); void ListDelete_CL(LinkList&CL,ElemType min,ElemType max);裁判测试程序样例:原创 2020-09-26 23:09:59 · 617 阅读 · 0 评论 -
第二章作业4-线性表应用 7-1 一元多项式的乘法与加法运算 (20分)
7-1 一元多项式的乘法与加法运算 (20分)设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1输出原创 2020-09-26 22:47:44 · 391 阅读 · 0 评论 -
第二章作业4-线性表应用 7-3 求链式线性表的倒数第K项 (20分)
7-3 求链式线性表的倒数第K项 (20分)给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5 6 7 8 9 0 -1输出样例:7Accepted Code#include <stdio.h>#include转载 2020-09-26 22:42:24 · 1030 阅读 · 0 评论 -
笔记:第一章作业2--链式存储结构及其操作
6-2 单链表元素定位 (12分)本题要求在链表中查找第一个数据域取值为x的节点,返回节点的位序。L是一个带头结点的单链表,函数ListLocate_L(LinkList L, ElemType x)要求在链表中查找第一个数据域取值为x的节点,返回其位序(从1开始),查找不到则返回0。例如,原单链表各个元素节点的元素依次为1,2,3,4,则ListLocate_L(L, 1)返回1,ListLocate_L(L, 3)返回3,而ListLocate_L(L, 100)返回0。函数接口定义:int原创 2020-09-09 21:07:13 · 340 阅读 · 0 评论 -
笔记:第一章作业2--链式存储结构及其操作
6-1 循环单链表区间删除 (15分)本题要求实现带头结点的循环单链表的创建和单链表的区间删除。L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于max的链表元素。函数接口定义:Status ListCreate_CL(LinkList &CL);void ListDelete_CL(LinkList &CL,ElemType min,ElemType max);裁判测试程序样例:/原创 2020-09-09 21:04:05 · 211 阅读 · 0 评论 -
第一章作业3-算法时间复杂度和空间复杂度 6-1 爆内存函数实例 (6分)
本题要求实现一个递归函数,用户传入非负整型参数n,用户依次输出1到n之间的整数。所谓递归函数就是指自己调用自己的函数。说明:(1)递归函数求解问题的基本思想是把一个大规模问题的求解归结为一个相对较小规模问题的求解,小规模归结为小小规模,以此类推,直至问题规模小至边界(边界问题可直接求解)。递归函数由两部分组成,一部分为递归边界,另一部分为递归关系式。以求阶乘函数为例,递归边界Factorial(1)=1;递归公式: Factorial(n)=nFactorial(n-1),它对应的递归函数如下:原创 2020-09-06 10:57:43 · 406 阅读 · 0 评论 -
PTA第一章作业1--数据结构基本概念 顺序表基本操作
6-2 顺序表基本操作 (10分)本题要求实现顺序表元素的增、删、查找以及顺序表输出共4个基本操作函数。L是一个顺序表,函数Status ListInsert_Sq(SqList &L, int pos, ElemType e)是在顺序表的pos位置插入一个元素e(pos应该从1开始),函数Status ListDelete_Sq(SqList &L, int pos, ElemType &e)是删除顺序表的pos位置的元素并用引用型参数e带回(pos应该从1开始),函数int L原创 2020-09-02 20:34:53 · 1872 阅读 · 0 评论