
数据结构专题
Data Structure
生活沒有前戲
我是蒟蒻(jv ruo)
展开
-
6-42 归并排序 (10分)
本题要求实现二路归并排序中的归并操作,待排序列的长度1<=n<=1000。函数接口定义:void Merge(SqList L,int low,int m,int high);其中L是待排序表,使排序后的数据从小到大排列。类型定义:#include<stdio.h>#include<stdlib.h>typedef int Ke...原创 2020-02-14 18:02:11 · 7224 阅读 · 0 评论 -
6-40 简单选择排序 (10分)
本题要求实现简单选择排序函数,待排序列的长度1<=n<=1000。函数接口定义:void SelectSort(SqList L);其中L是待排序表,使排序后的数据从小到大排列。类型定义:typedef int KeyType;typedef struct { KeyType *elem; /*elem...原创 2020-02-10 15:13:36 · 6161 阅读 · 0 评论 -
6-39 快速排序 (10分)
本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。函数接口定义:int Partition ( SqList L,int low, int high );其中L是待排序表,使排序后的数据从小到大排列。类型定义:typedef int KeyType;typedef struct { ...原创 2020-02-10 11:05:55 · 3709 阅读 · 0 评论 -
6-33 直接插入排序 (10分)
本题要求实现直接插入排序函数,待排序列的长度1<=n<=1000。函数接口定义:void InsertSort(SqList L);其中L是待排序表,使排序后的数据从小到大排列。类型定义:typedef int KeyType;typedef struct { KeyType *elem; /*elem...原创 2020-02-09 17:03:21 · 1768 阅读 · 0 评论 -
6-34 中序输出度为2的结点 (10分)
本题要求实现一个函数,按照中序遍历的顺序输出给定二叉树中度为2的结点。函数接口定义:void InorderPrintNodes( BiTree T);T是二叉树树根指针,InorderPrintNodes按照中序遍历的顺序输出给定二叉树T中度为2的结点,格式为一个空格跟着一个字符。其中BiTree结构定义如下:typedef struct BiTNode{ Ele...原创 2020-02-09 15:34:16 · 2969 阅读 · 0 评论 -
6-32 中序输出度为1的结点 (10分)
本题要求实现一个函数,按照中序遍历的顺序输出给定二叉树中度为1的结点。函数接口定义:void InorderPrintNodes( BiTree T);T是二叉树树根指针,InorderPrintNodes按照中序遍历的顺序输出给定二叉树T中度为1的结点,格式为一个空格跟着一个字符。其中BiTree结构定义如下:typedef struct BiTNode{ Ele...原创 2020-02-09 15:28:28 · 6256 阅读 · 1 评论 -
6-31 中序输出叶子结点 (10分)
本题要求实现一个函数,按照中序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void InorderPrintLeaves( BiTree T);T是二叉树树根指针,InorderPrintLeaves按照中序遍历的顺序输出给定二叉树T的叶结点,格式为一个空格跟着一个字符。其中BiTree结构定义如下:typedef struct BiTNode{ ElemTyp...原创 2020-02-09 14:51:44 · 6091 阅读 · 0 评论 -
6-27 图的广度遍历-邻接表实现 (10分)
本题要求实现邻接表存储图的广度优先遍历。函数接口定义:void BFS(ALGraph *G,int i);其中ALGraph是邻接表存储的图,定义如下:#define MAX_VERTEX_NUM 10 /*定义最大顶点数*/typedef int Vertex;typedef struct ArcNode{ /*表结点*/ int adjv...原创 2020-02-09 10:10:04 · 3941 阅读 · 4 评论 -
6-28 图的深度遍历-邻接表实现 (10分)
(区别于之前的)本题要求实现邻接表存储图的深度优先遍历。函数接口定义:void DFS(ALGraph *G,int i);其中ALGraph是邻接表存储的图,定义如下:#define MAX_VERTEX_NUM 10 /*定义最大顶点数*/typedef int Vertex;typedef struct ArcNode{ /*表结点*/...原创 2020-02-09 09:41:35 · 1078 阅读 · 0 评论 -
6-26 图的广度遍历-邻接矩阵实现 (10分)
本题要求实现邻接矩阵存储图的广度优先遍历。函数接口定义:void BFS(MGraph G,Vertex i);其中MGraph是邻接矩阵存储的图,定义如下:#define MaxVertexNum 10 /*定义最大顶点数*/typedef int Vertex;/* 用顶点下标表示顶点,为整型 */typedef struct{ int arcs[MaxV...原创 2020-02-08 21:54:19 · 3813 阅读 · 0 评论 -
6-25 图的深度遍历-邻接矩阵实现 (10分)
本题要求实现邻接矩阵存储图的深度优先遍历。函数接口定义:void DFS(MGraph G,Vertex v);其中MGraph是邻接矩阵存储的图,定义如下:#define MaxVertexNum 10 /*定义最大顶点数*/typedef int Vertex;/* 用顶点下标表示顶点,为整型 */typedef struct{ int arcs[M...原创 2020-02-08 21:40:35 · 3621 阅读 · 0 评论 -
6-23 二叉树的层次遍历 (6分)
本题要求实现给定的二叉树的层次遍历。函数接口定义:void Levelorder(BiTree T);T是二叉树树根指针,Levelorder函数输出给定二叉树的层次遍历序列,格式为一个空格跟着一个字符。其中BinTree结构定义如下:typedef char ElemType;typedef struct BiTNode{ ElemType data; ...原创 2020-02-08 17:51:59 · 1982 阅读 · 1 评论 -
6-6 邻接表存储图的广度优先遍历 (20分)
试实现邻接表存储图的广度优先遍历。函数接口定义:void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */typedef struct AdjVNode *PtrToAdjVNode; struct AdjVNode{ Vertex Ad...原创 2020-02-08 16:27:12 · 1203 阅读 · 0 评论 -
6-5 邻接矩阵存储图的深度优先遍历 (20分)
试实现邻接矩阵存储图的深度优先遍历。函数接口定义:void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );其中MGraph是邻接矩阵存储的图,定义如下:typedef struct GNode *PtrToGNode;struct GNode{ int Nv; /* 顶点数 */ int Ne; ...原创 2020-02-08 14:58:41 · 1550 阅读 · 0 评论 -
6-2 两个有序链表序列的合并 (15分)
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Ne...原创 2020-02-08 12:10:08 · 4208 阅读 · 0 评论 -
7-8 Left-pad (20分)
根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用*去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是******GPLT。Node社...原创 2020-02-08 09:31:56 · 254 阅读 · 0 评论 -
6-1 递增的整数序列链表的插入 (15分)
本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。函数接口定义:List Insert( List L, ElementType X );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ ...原创 2020-02-07 22:58:45 · 5734 阅读 · 0 评论 -
6-21 带头结点的单链表删除操作 (10分)
本题要求实现删除单链表的第i个元素结点,删除成功返回1,否则返回0。函数接口定义:int delete_link ( LinkList L,int i);L为单链表的头指针,i为删除结点的序号裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef ...原创 2020-02-07 17:09:08 · 7379 阅读 · 0 评论 -
6-20 带头结点的单链表插入操作 (10分)
本题要求实现带头结点的单链表插入操作,插入成功返回1,否则返回0。函数接口定义:int insert_link ( LinkList L,int i,ElemType e);L是单链表的头指针,i为插入位置,e是插入的数据元素,插入成功返回1,否则返回0。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>...原创 2020-02-07 15:35:27 · 6592 阅读 · 0 评论 -
6-19 顺序表的有序插入操作 (10分)
本题要求实现一个函数,要求将指定元素插入到有序表的合适位置,使得插入后仍然保持有序,若插入失败返回0;插入成功则返回1,并且顺序表的长度加1.函数接口定义:int SqInsert(SqList &L,ElemType e);其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList; ...原创 2020-02-07 11:32:41 · 7291 阅读 · 0 评论 -
6-18 顺序表的删除操作 (10分)
本题要求实现一个函数,要求将顺序表的第i个元素删掉,成功删除返回1,否则返回0;函数接口定义:int ListDelete(SqList &L,int i);其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList;裁判测试程序样例:#include <stdio.h&...原创 2020-02-07 11:12:07 · 7101 阅读 · 0 评论 -
6-17 顺序表的插入操作 (10分)
本题要求实现一个函数,在顺序表的第i个位置插入一个新的数据元素e,插入成功后顺序表的长度加1,函数返回值为1;插入失败函数返回值为0;函数接口定义:int ListInsert(SqList &L,int i,ElemType e);其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqLis...原创 2020-02-07 10:58:10 · 3105 阅读 · 0 评论 -
6-16 顺序表的查找操作 (10分)
本题要求实现一个函数,要求从顺序表中查找指定元素,并返回第一个查找成功的元素在表中的位置序号,若查找失败,则返回0;函数接口定义:int LocateElem(SqList L,ElemType e);其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList; 裁判测试程序样例:#i...原创 2020-02-07 10:23:13 · 3437 阅读 · 1 评论 -
数据结构顺序表中Sqlist *L,&L,Sqlist *&L
转载地址https://www.cnblogs.com/GreenHands/p/11112413.html转载 2020-02-07 09:50:39 · 1851 阅读 · 0 评论 -
6-15 线性表元素的区间删除 (20分)
给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:List Delete( List L, ElementType minD, ElementType maxD );其中List结构定义如下:typedef int Position;typedef struct LNode ...原创 2020-02-07 09:38:27 · 1652 阅读 · 0 评论 -
6-9 统计单链表元素出现次数 (10分)
本题要求实现一个函数,统计带头结点的单链表中某个元素出现的次数。函数接口定义:int GetCount ( LinkList L,ElemType e );L是带头结点的单链表的头指针,e是要统计次数的元素值。如果e在单链表中存在,函数GetCount返回其出现的次数;否则,返回0。裁判测试程序样例:#include <stdio.h>#include ...原创 2020-02-06 21:08:46 · 4467 阅读 · 0 评论 -
6-8 求单链表元素序号 (10分)
本题要求实现一个函数,求带头结点的单链表中元素序号。函数接口定义:int Locate ( LinkList L, ElemType e);L是带头结点的单链表的头指针,e是要查找的元素值。如果e在单链表中存在,函数Locate返回其序号(序号从1开始);否则,返回0。裁判测试程序样例:#include <stdio.h>#include <stdl...原创 2020-02-06 17:54:38 · 5412 阅读 · 5 评论 -
6-4 是否二叉搜索树
本题要求实现函数,判断给定二叉树是否二叉搜索树。函数接口定义:bool IsBST ( BinTree T );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; B...原创 2020-02-06 10:46:21 · 935 阅读 · 0 评论 -
07-图6 旅游规划 (25 分)
07-图6 旅游规划 (25 分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);...原创 2018-10-25 20:37:59 · 747 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树 (25 分)
04-树4 是否同一棵二叉搜索树 (25 分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (...原创 2018-10-12 17:02:45 · 314 阅读 · 0 评论 -
02-线性结构3 Reversing Linked List (25 分)
02-线性结构3 Reversing Linked List (25 分)Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, th...原创 2018-10-09 20:55:55 · 585 阅读 · 0 评论 -
02-线性结构2 一元多项式的乘法与加法运算 (20 分)
02-线性结构2 一元多项式的乘法与加法运算 (20 分)设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。...原创 2018-10-08 21:19:36 · 131 阅读 · 0 评论 -
中国大学MOOC-陈越、何钦铭-数据结构-2018春期中考试(错题整理)
1-3若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 (3分)T F 此题正解为T,当时直接想懵了,正解应当是:1进2进3进,3出4进4出,然后要想1出必须2先出,因此不可能。1-9无向连通图至少有一个顶点的度为1。 (3分)T F 此题正解为F1. 每条边连接两个顶点,所有顶点的度之和等于...原创 2018-04-24 20:23:10 · 3009 阅读 · 0 评论 -
7-11 通讯录的录入与显示(10 分)
7-11 通讯录的录入与显示(10 分)通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。输入格式:输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日...原创 2018-05-12 15:44:36 · 3007 阅读 · 0 评论 -
7-6 有理数比较(10 分)
7-6 有理数比较(10 分)本题要求编写程序,比较两个有理数的大小。输入格式:输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。输出格式:在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”。输入样例1:1/2 3/4输出样例1:1/2 ...原创 2018-05-11 15:37:07 · 12261 阅读 · 1 评论 -
7-5 通讯录排序(20 分)
7-5 通讯录排序(20 分)输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。输入格式:输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数...原创 2018-05-11 15:33:47 · 10437 阅读 · 1 评论 -
7-1 输出学生成绩(20 分)
7-1 输出学生成绩(20 分)本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。输入格式:输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。输出格式:按照以下格式输出:average = 平均成绩max = 最高成绩min = 最低成绩结果均保留两位小数。输入样例:385 90 9...原创 2018-05-11 15:04:06 · 20320 阅读 · 0 评论 -
2017-2018-2数据结构第一次实验-C语言复习(指针、函数、结构体)——单选题
2-4下列程序段的输出是____。 (2分)int c[]={1, 3, 5};int *k=c+1;printf("%d", *++k);3456解析:指针变量k第向数组c的第二个元素,*++k相当于*(++k),执行完++k后,k指向数组c的第三个元素,所以*(++k)就应该等于c[2]2-5对于如下说明,语法和语义都正确的赋值是_____。 (2分)int c, *s, a[]={1,...原创 2018-05-05 10:05:34 · 2629 阅读 · 0 评论 -
7-4 查找书籍(20 分)
7-4 查找书籍(20 分)给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式:在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。输入样例:3Pro...原创 2018-05-03 20:42:59 · 15462 阅读 · 1 评论 -
7-2 时间换算(15 分)
7-2 时间换算(15 分)本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。输入格式:输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。输出格式:输出在一行中给出hh:mm:ss格式的结果时间。输入样例:11:59:4030输出样例:12:00:10作者: C课程组单位: 浙江大学时间限...原创 2018-05-03 20:01:04 · 15829 阅读 · 0 评论