【数据结构实验_青岛大学】
青岛大学数据结构实验课程序
sdguy_nobody
未来现实主义
展开
-
数据结构实验_通讯录
【代码】数据结构实验_通讯录。原创 2023-08-10 15:43:27 · 348 阅读 · 0 评论 -
6-7 归并排序(递归法) (10分)_数据结构实验8_羊卓的杨
6-7 归并排序(递归法) (10分)本题要求实现二路归并排序中的归并操作,待排序列的长度1<=n<=1000。函数接口定义:void Merge(SqList L,int low,int m,int high);其中L是待排序表,使排序后的数据从小到大排列。裁判测试程序样例:#include <iostream>#include <string.h> #include <stdio.h>#include <stdlib.h>原创 2020-12-18 16:45:57 · 1804 阅读 · 1 评论 -
6-6 折半插入排序 (10分)_数据结构实验8_羊卓的杨
实现折半插入排序。函数接口定义:void BInsertSort(SqList &L);裁判测试程序样例:#include <iostream>#define MAXSIZE 1000using namespace std;typedef struct{ int key; char *otherinfo;}ElemType;typedef struct{ ElemType *r; int length;}SqList;void BInser.原创 2020-12-18 15:33:35 · 4818 阅读 · 4 评论 -
6-4 简单选择排序 (10分)_数据结构实验8_羊卓的杨
6-4 简单选择排序 (10分)本题要求实现简单选择排序函数,待排序列的长度1<=n<=1000。函数接口定义:void SelectSort(SqList L);其中L是待排序表,使排序后的数据从小到大排列。 ###类型定义:typedef int KeyType;typedef struct { KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/ in原创 2020-12-18 15:59:26 · 3979 阅读 · 4 评论 -
6-3 快速排序 (10分)_数据结构实验8_羊卓的杨
6-3 快速排序 (10分)本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。函数接口定义:int Partition ( SqList L,int low, int high );其中L是待排序表,使排序后的数据从小到大排列。 ###类型定义:typedef int KeyType;typedef struct { KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/原创 2020-12-18 16:15:22 · 2469 阅读 · 2 评论 -
6-2 冒泡排序 (10分)_数据结构实验8_羊卓的杨
6-2 冒泡排序 (10分)本题要求实现冒泡排序函数,待排序列的长度1<=n<=1000。函数接口定义:void bubble_sort(SqList L);其中L是待排序表,使排序后的数据从小到大排列。 ###类型定义:typedef int KeyType;typedef struct { KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/ int Le原创 2020-12-18 15:46:18 · 4764 阅读 · 1 评论 -
6-1 直接插入排序 (10分)_数据结构实验8_羊卓的杨
6-1 直接插入排序 (10分)本题要求实现直接插入排序函数,待排序列的长度1<=n<=1000。函数接口定义:void InsertSort(SqList L);其中L是待排序表,使排序后的数据从小到大排列。 ###类型定义:typedef int KeyType;typedef struct {KeyType *elem; /elem[0]一般作哨兵或缓冲区/int Length;}SqList;裁判测试程序样例:#include<stdio.h&原创 2020-12-18 15:09:28 · 2145 阅读 · 0 评论 -
7-1 建立二叉搜索树并查找父结点 (48分)_数据结构实验7_羊卓的杨
7-1 建立二叉搜索树并查找父结点 (48分)按输入顺序建立二叉搜索树,并搜索某一结点,输出其父结点。输入格式:输入有三行: 第一行是n值,表示有n个结点; 第二行有n个整数,分别代表n个结点的数据值; 第三行是x,表示要搜索值为x的结点的父结点。输出格式:输出值为x的结点的父结点的值。 若值为x的结点不存在,则输出:It does not exist. 若值为x的结点是根结点,则输出:It doesn’t have parent.输入样例:2203020输出样例:It d原创 2020-12-20 17:21:39 · 3509 阅读 · 1 评论 -
6-6 二叉排序树查找最小值最大值操作 (6分)_数据结构实验7_羊卓的杨
6-6 二叉排序树查找最小值最大值操作 (6分)本题要求实现二叉排序树的两个基本操作。函数接口定义:BSTree FindMin( BSTree T);BSTree FindMax( BSTree T);函数FindMin返回二叉排序树T中最小元素结点的指针;函数FindMax返回二叉排序树T中最大元素结点的指针。其中BSTree结构定义如下:typedef int ElemType;typedef struct BSTNode{ ElemType data; stru原创 2020-12-19 12:35:10 · 2662 阅读 · 2 评论 -
6-4 创建哈希表及查找(拉链法) (10分)_数据结构实验7_羊卓的杨
6-4 创建哈希表及查找(拉链法) (10分)实现哈希表创建及查找算法,哈希函数使用除余法,用拉链法处理冲突。函数接口定义:void CreateHash(HashTable HT[],int n); //输入不大于m的n个不为0(0表示空值)的数,用拉链法解决冲突构造散列表float ASL(HashTable HT[]); //计算平均查找长度其中 HT 表示哈希表, n表示记录数。裁判测试程序样例:#include<iostream>using namespace std原创 2020-12-20 16:04:58 · 2649 阅读 · 4 评论 -
6-3 哈希表的创建及查找(线性探查法) (10分)_数据结构实验7_羊卓的杨
6-3 哈希表的创建及查找(线性探查法) (10分)实现哈希表创建及查找算法,哈希函数使用除余法,用线性探测法处理冲突。函数接口定义:void CreateHash(HashTable HT[],int n); //输入不大于m的n个不为0(0表示空值)的数,用线性探查法解决冲突构造散列表int SearchHash(HashTable HT[],int key); //输入一个值key,在散列表中查找key位置其中 HT 表示哈希表, n表示记录数,key要查找的关键字裁判测试程序样例:#原创 2020-12-20 14:55:45 · 8279 阅读 · 4 评论 -
6-5 二叉排序树查找操作 (6分)_数据结构实验7_羊卓的杨
6-5 二叉排序树查找操作 (6分)本题要求实现二叉排序树的查找操作。函数接口定义:BSTree SearchBST(BSTree T,ElemType e);其中BSTree结构定义如下:typedef int ElemType;typedef struct BSTNode{ ElemType data; struct BSTNode *lchild,*rchild;}BSTNode,*BSTree;裁判测试程序样例:#include <stdio.h>原创 2020-12-19 12:07:58 · 1830 阅读 · 1 评论 -
6-2 折半查找 (15分)_数据结构实验7_羊卓的杨
6-2 折半查找 (15分)给一个严格递增数列,函数int Search_Bin(SSTable T, KeyType k)用来二分地查找k在数列中的位置。函数接口定义:int Search_Bin(SSTable T, KeyType k)其中T是有序表,k是查找的值。裁判测试程序样例:#include <iostream>using namespace std;#define MAXSIZE 50typedef int KeyType;typedef stru原创 2020-12-19 11:54:44 · 1189 阅读 · 1 评论 -
6-1 顺序表的查找操作 (10分)_数据结构实验7_羊卓的杨
6-1 顺序表的查找操作 (10分)本题要求实现一个函数,要求从顺序表中查找指定元素,并返回第一个查找成功的元素在表中的位置序号,若查找失败,则返回0;函数接口定义:int LocateElem(SqList L,ElemType e);其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList;裁判测试程序样例:#include <stdio.h>#include <stdli原创 2020-12-19 11:37:42 · 944 阅读 · 1 评论 -
6-7 拓扑排序 (10分)_数据结构实验6_羊卓的杨
6-7 拓扑排序 (10分)试实现拓扑排序算法。函数void FindInDegree(ALGraph G,int indegree[])实现图中各个顶点入度的统计;函数int TopologicalSort(ALGraph G , int topo[])获取拓扑序列。函数接口定义void FindInDegree(ALGraph G,int indegree[]);int TopologicalSort(ALGraph G , int topo[]);其中 G 是基于邻接表及逆邻接表存储表示原创 2020-12-17 21:15:28 · 2023 阅读 · 0 评论 -
6-6 图的深度遍历-邻接表实现 (10分)_数据结构实验6_羊卓的杨
6-6 图的深度遍历-邻接表实现 (10分)本题要求实现邻接表存储图的深度优先遍历。函数接口定义:void DFS(ALGraph *G,int i);其中ALGraph是邻接表存储的图,定义如下:#define MAX_VERTEX_NUM 10 /*定义最大顶点数*/typedef int Vertex;typedef struct ArcNode{ /*表结点*/ int adjvex; /*邻接点域*/ struc原创 2020-12-17 18:27:14 · 602 阅读 · 0 评论 -
6-5 图的广度遍历-邻接表实现 (10分)_数据结构实验6_羊卓的杨
6-5 图的广度遍历-邻接表实现 (10分)函数接口定义:void BFS(ALGraph *G,int i);其中ALGraph是邻接表存储的图,定义如下:#define MAX_VERTEX_NUM 10 /定义最大顶点数/typedef int Vertex;typedef struct ArcNode{ /表结点/int adjvex; /邻接点域/struct ArcNode *nextarc; /指向下一个表结点/}A原创 2020-12-17 16:57:21 · 766 阅读 · 0 评论 -
6-4 图的广度遍历-邻接矩阵实现 (10分)_数据结构实验6_羊卓的杨
6-4 图的广度遍历-邻接矩阵实现 (10分)本题要求实现邻接矩阵存储图的广度优先遍历。函数接口定义:void BFS(MGraph G,Vertex i);其中MGraph是邻接矩阵存储的图,定义如下:#define MaxVertexNum 10 /定义最大顶点数/typedef int Vertex;/* 用顶点下标表示顶点,为整型 */typedef struct{int arcs[MaxVertexNum][MaxVertexNum]; /邻接矩阵/int vexn原创 2020-12-17 16:24:40 · 1270 阅读 · 0 评论 -
6-3 图的深度遍历-邻接矩阵实现 (10分)_数据结构实验6_羊卓的杨
6-3 图的深度遍历-邻接矩阵实现 (10分)本题要求实现邻接矩阵存储图的深度优先遍历。函数接口定义:void DFS(MGraph G,Vertex v);其中MGraph是邻接矩阵存储的图,定义如下:#define MaxVertexNum 10 /定义最大顶点数/typedef int Vertex;/* 用顶点下标表示顶点,为整型 */typedef struct{int arcs[MaxVertexNum][MaxVertexNum]; /邻接矩阵/int vexn原创 2020-12-17 15:59:08 · 1911 阅读 · 0 评论 -
6-2 采用邻接表创建无向图 (20分)_数据结构实验6_羊卓的杨
6-2 采用邻接表创建无向图 (20分)采用邻接表创建无向图G ,依次输出各顶点的度。函数接口定义:void CreateUDG(ALGraph &G);其中 G 是采用邻接表表示的无向图。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>#define MVNum 100 typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc;原创 2020-12-17 15:39:36 · 7259 阅读 · 0 评论 -
6-1 采用邻接矩阵表示法创建无向图 (20分)_数据结构实验6_羊卓的杨
6-1 采用邻接矩阵表示法创建无向图 (20分)采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度。函数接口定义:void CreateUDN(AMGraph &G);其中 G 是采用邻接矩阵表示的无向图。裁判测试程序样例:#include <stdio.h>#define MVNum 100 typedef struct{ char vexs[MVNum]; int arcs原创 2020-12-17 15:10:33 · 8944 阅读 · 0 评论 -
7-2 哈夫曼树与哈夫曼编码 (30分)_数据结构实验5_羊卓的杨
7-2 哈夫曼树与哈夫曼编码 (30分)输入格式:输入有3行。 第1行:符号个数n(2~20)。 第2行:一个不含空格的字符串。记录着本题的符号表。我们约定符号都是单个的小写英文字母,且从字符‘a’开始顺序出现。也就是说,如果 n 为 2 ,则符号表为 ab ;如果 n 为 6,则符号为 abcdef;以此类推。 第3行:各符号出现频率(用乘以100后的整数),用空格分隔。输出格式:先输出构造的哈夫曼树带权路径长度。 接下来输出n行,每行是一个字符和该字符对应的哈夫曼编码。字符按字典顺序输出。字符和原创 2020-12-17 14:51:29 · 2680 阅读 · 0 评论 -
7-1 玩转二叉链表 (20分)_数据结构实验5_羊卓的杨
7-1 玩转二叉链表 (20分)设计程序,按先序创建二叉树的二叉链表;然后先序、中序、后序遍历二叉树。输入格式:按先序输入一棵二叉树。二叉树中每个结点的键值用字符表示,字符之间不含空格。注意空树信息也要提供,以#字符表示空树。输出格式:输出3行。第一行是先序遍历二叉树的序列,第二行是中序遍历二叉树的序列,第三行是后序遍历二叉树的序列。每行首尾不得有多余空格。序列中不含#。输入样例:ab##dc###输出样例:abdcbacdbcda答案样例://巧妙地用到了填空题第一题的代原创 2020-12-10 16:25:24 · 1337 阅读 · 0 评论 -
6-5 二叉树的层次遍历 (6分)_数据结构实验5_羊卓的杨
6-5 二叉树的层次遍历 (6分)本题要求实现给定的二叉树的层次遍历。函数接口定义:void Levelorder(BiTree T);T是二叉树树根指针,Levelorder函数输出给定二叉树的层次遍历序列,格式为一个空格跟着一个字符。其中BinTree结构定义如下:typedef char ElemType;typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild;}BiTNode, *B原创 2020-12-10 15:55:12 · 2157 阅读 · 0 评论 -
6-4 统计二叉树度为1的结点个数 (10分)_数据结构实验5_羊卓的杨
6-4 统计二叉树度为1的结点个数 (10分)函数接口定义:int NodeCount ( BiTree T);T是二叉树树根指针,函数NodeCount返回二叉树中度为1的结点个数,若树为空,返回0。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef char ElemType;typedef struct BiTNode{ ElemType data; struct BiTNode *l原创 2020-12-10 10:46:20 · 3656 阅读 · 0 评论 -
6-3 统计二叉树叶子结点个数 (10分)_数据结构实验5_羊卓的杨
6-3 统计二叉树叶子结点个数 (10分)本题要求实现一个函数,可统计二叉树的叶子结点个数。函数接口定义:int LeafCount ( BiTree T);T是二叉树树根指针,函数LeafCount返回二叉树中叶子结点个数,若树为空,则返回0。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef char ElemType;typedef struct BiTNode{ ElemType data原创 2020-12-10 10:36:50 · 4522 阅读 · 0 评论 -
6-2 统计二叉树结点个数 (10分)_数据结构实验5_羊卓的杨
6-2 统计二叉树结点个数 (10分)本题要求实现一个函数,可统计二叉树的结点个数。函数接口定义:int NodeCount ( BiTree T);T是二叉树树根指针,函数NodeCount返回二叉树中结点个数,若树为空,返回0。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef char ElemType;typedef struct BiTNode{ ElemType data; s原创 2020-12-10 10:20:53 · 6234 阅读 · 0 评论 -
6-1 求二叉树高度 (20分)_数据结构实验5_羊卓的杨
6-1 求二叉树高度 (20分)本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};要求函数返回给定二叉树BT的高度值。裁判测试程序样例:#inclu原创 2020-12-09 23:56:45 · 590 阅读 · 0 评论 -
7-5 三元组顺序表表示的稀疏矩阵转置运算Ⅰ (30分)_数据结构实验4_羊卓的杨
7-5 三元组顺序表表示的稀疏矩阵转置运算Ⅰ (30分)来都来了点个赞再走呗,一键三连也行,可以点下方链接进入我的bilibili主页转转,也可以关注我的个人公众号~后期公众号会发送一些比较好玩的东西bilibili:羊卓的杨公众号:羊卓的杨...原创 2020-11-29 18:29:03 · 2225 阅读 · 0 评论 -
7-4 稀疏矩阵加法 (20分)_数据结构实验4_羊卓的杨
7-4 稀疏矩阵加法 (20分)来都来了点个赞再走呗,一键三连也行,可以点下方链接进入我的bilibili主页转转,也可以关注我的个人公众号~后期公众号会发送一些比较好玩的东西bilibili:羊卓的杨公众号:羊卓的杨...原创 2020-11-29 23:12:58 · 589 阅读 · 0 评论 -
7-3 找鞍点 (20分)_数据结构实验4_羊卓的杨
7-3 找鞍点 (20分)来都来了点个赞再走呗,一键三连也行,可以点下方链接进入我的bilibili主页转转,也可以关注我的个人公众号~后期公众号会发送一些比较好玩的东西bilibili:羊卓的杨公众号:羊卓的杨...原创 2020-11-28 14:36:58 · 817 阅读 · 0 评论 -
7-1 串的模式匹配 (25分)_数据结构4_羊卓的杨
7-1 串的模式匹配 (25分)给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性;数据1:随机数据,String 长度为 105,Pattern 长度为 10;数据2:随机数据,String 长度为 105,Pa原创 2020-11-28 14:14:47 · 1256 阅读 · 0 评论 -
7-3 中缀表达式转换为后缀表达式并求值 (20分)_数据结构实验3_羊卓的杨
7-3 中缀表达式转换为后缀表达式并求值 (20分)把题目给出中缀表达式转换为后缀表达式输出,并求后缀表达式的值。为简单起见,我们约定:1、输入的中缀表达式一定是合法的,并且只含数字,四种运算符+、-、*、/和小括号;2、运算数都是一位正整数(1~9);3、输入的中缀表达式不超过20个字符;4、除法运算的结果仍然是正整数。输入格式:输入的第一行是一个正整数 N ,表示以下有 N 行。每行是一个中缀表达式。为简单起见,我们约定:1、输入的中缀表达式一定是合法的,并且只含数字,四种运算符+、-、*、/和小原创 2020-11-27 23:19:13 · 2515 阅读 · 1 评论 -
7-2 螺旋方阵 (20分)_数据结构实验4_羊卓的杨
7-2 螺旋方阵 (20分)所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。输入格式:输入在一行中给出一个正整数N(<10)。输出格式:输出N×N的螺旋方阵。每行N个数字,每个数字占3位。输入样例:5输出样例:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9答案样例:这里采用的原创 2020-11-28 00:05:39 · 500 阅读 · 1 评论 -
7-1 判断回文字符串 (10分)_数据结构实验3_羊卓的杨
7-1 判断回文字符串 (10分)输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No。输入样例1:level输出样例1:levelYes输入样例2:1 + 2 = 2 + 1 =输出样例2:1 + 2 = 2 + 1 =No(普通做法)答案样例原创 2020-11-26 18:33:26 · 2500 阅读 · 1 评论 -
6-3 循环队列操作集 (30分)_数据结构实验3_羊卓的杨
6-3 循环队列操作集 (30分)本题要求实现循环队列操作集。函数接口定义:在这里描述函数接口。例如:#define MAXSIZE 10typedef struct _queue{ int front;//队头指针 int rear;//队尾指针 int *data;//指向数据区}queue;//创建一个空队列queue* createQueue();//入队void enQueue(queue* q, int x);//判断队列是否已满bool原创 2020-11-26 16:43:13 · 3354 阅读 · 0 评论 -
6-2 顺序栈的应用:表达式括号匹配 (30分)_数据结构实验3_羊卓的杨
6-2 顺序栈的应用:表达式括号匹配 (30分)本题要求实现一个表达式括号匹配判断函数,输入参数为一个指针型字符串,字符串长度不可超100,括号有( ),[ ],{ }三种形式(输入形式例如:{[(1+2)*3]}-9)。如果匹配成功,则该函数应该返回1,匹配不成功则返回0。函数接口定义:int matching(char* exp);//提示:可以使用string.h中的"strlen()"函数,帮助判断用户输入的表达式的长度裁判测试程序样例:#include <iostream&g原创 2020-11-26 17:27:36 · 2299 阅读 · 1 评论 -
6-1 十进制转二进制(顺序栈设计和应用) (20分)_数据结构实验3_羊卓的杨
6-1 十进制转二进制(顺序栈设计和应用) (20分)设计一个顺序栈,并利用该顺序栈将给定的十进制整整数转换为二进制并输出。函数接口定义:#define MaxSize 100 /* 栈最大容量 */int top; /* 栈顶指针 */int mystack[MaxSize]; /* 顺序栈 *//*判栈是否为空,空返回true,非空返回false */bool isEmpty();/* 元素x入栈 */void Push(int x);/* 取栈顶元素原创 2020-11-26 15:48:31 · 4849 阅读 · 0 评论