数据结构
数据结构课程相关知识和题目
abysswatcher_1
这个作者很懒,什么都没留下…
展开
-
数据结构课程设计-(五)行车路线(图的应用)
行车路线小明和小芳出去乡村玩,小明负责开车,小芳来导航。 小芳将可能的道路分为大道和小道。大道比较好走,每走1公里小明会增加1的疲劳度。小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公里小明会增加s2的疲劳度。 例如:有5个路口,1号路口到2号路口为小道,2号路口到3号路口为小道,3号路口到4号路口为大道,4号路口到5号路口为小道,相邻路口之间的距离都是2公里。如果小明从1号路口到5号路口,则总疲劳值为(2+2)2+2+22=16+2+4=22。 现在小芳拿到了地图,请帮助她规划原创 2020-12-22 08:57:21 · 1463 阅读 · 0 评论 -
数据结构课程设计 - (四)二叉排序树(删除,插入,建立,查询)
1、二叉排序树与文件操作功能要求:(1)从键盘输入一组学生记录建立二叉排序树;(2)中序遍历二叉排序树;(3)求二叉排序树深度;(4)求二叉排序树的所有节点数和叶子节点数;(5)向二叉排序树插入一条学生记录;(6)从二叉排序树中删除一条学生记录;(7)从二叉排序树中查询一条学生记录;(8)以广义表的形式输出二叉排序树//定义学生记录类型Struct student{Char num[6]; //学号Int grade; //成绩};//定义二叉排序树节点值原创 2020-12-18 08:45:51 · 2688 阅读 · 5 评论 -
数据结构课程设计-(三)哈夫曼编码器
哈夫曼编/译码器任务:建立最优二叉树函数。要求:可以建立函数输入二叉树,并输出其哈夫曼树。在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一原创 2020-12-15 09:10:26 · 6685 阅读 · 3 评论 -
数据结构课程设计- (二) 栈与队列(迷宫问题)
迷宫问题求解任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;要求:在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。利用栈实现各个方向的存储,若走到死路则退到前一格,实现寻找路径的功能:#include <bits/stdc++.h>using namespace std;#define maxsize 100typedef struct point//点{原创 2020-12-13 15:26:46 · 3978 阅读 · 3 评论 -
数据结构课程设计-(一)线性结构(约瑟夫环)
joseph环任务:编号是1,2,…,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。要求:利用单向循环链表存储结构模1拟此过程,按照出列的顺序输出各个人的编号。测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先原创 2020-12-08 22:35:51 · 1712 阅读 · 0 评论 -
图的遍历(BFS,DFS)
以邻接表的形式创建图:#include <bits/stdc++.h>using namespace std;typedef int vtype;typedef struct node //非头节点{ int num; struct node *next;} anode;typedef struct pnode //每行的头节点{ vtype data; anode *firstarc; int out, in, du;} vnode;原创 2020-12-07 22:23:50 · 805 阅读 · 0 评论 -
纸牌游戏-小猫钓鱼(队列与栈综合)
游戏规则某一天张兵和小明在一起玩扑克牌,每个人各自拿取一份扑克牌,张兵先把一张扑克牌放在桌子上,小明再放一张,出牌时,如果某人打出的牌与桌上的某张牌的牌面相同,即可将两张相同的牌及其之间所夹的牌全部取走,并依次放到自己手牌的末尾,当任意一人的手牌全部出完后,游戏结束,对手获得胜利。我们先来分析游戏中的几种操作,分别是出牌和赢牌,每个人的手牌可以设置成队列结构,出牌时从队列首弹出一个元素,...原创 2020-02-11 21:46:41 · 2160 阅读 · 1 评论 -
堆中的路径
题意理解:给定一系列数字,将其插入一个初始为空的最小堆中,随后给定任意下标I,打印从H[i]到根节点的路径。###样例输入5 346 23 26 24 105 4 3###输出样例24 23 1046 23 1026 10#include <stdio.h>#include <stdlib.h>#define MAXN 1001#define MI...原创 2020-02-10 21:50:55 · 244 阅读 · 0 评论 -
并查集
问题引入:例原创 2020-02-09 21:11:57 · 108 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
什么是哈夫曼树带权路径长度:设二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根结点到每个叶子结点的长度为lk,则每个叶子结点的带权路径长度之和就是:【例】有五个叶子结点,权值分别为[1,2,3,4,5],用此权值序列可以构造出不同的多个二叉树。分别计算他们的带权路径长度:1、WPL = 5X1 + 4X2 + 3X3 + (1+2)X4 = 342、WPL = 1X1 + 2X2...原创 2020-02-09 17:16:50 · 622 阅读 · 0 评论 -
堆(建立,插入,删除)
首先定义优先队列,优先队列是一种特殊的队列,取出元素的顺序是依据优先权(关键字)的大小,而不是元素进出队列的顺序。如果使用二叉搜索树存储这个优先队列,就构成了“堆”结构。若任意的根节点的元素都比其子树中的任何元素都大,则该堆称为最大堆;反之称为最小堆。堆结构常进行的操作有(以最大堆为例子):一 定义堆的结构:typedef struct HeapStruct *MaxHeap;str...原创 2020-02-06 18:17:33 · 167 阅读 · 0 评论 -
单链表逆转(Reversing Linked List)
输入数据:给定头结点的地址,以及接下来的结点个数N,和要逆转的结点个数K,接下来输入N组数据,分别是一个结点的地址,以及其元素,和其指针。(输入的结点不一定在同一条链表上)。sample input:00100 6 400000 4 9999900100 1 1230968237 6 -133218 3 0000099999 5 6823712309 2 33218要求将前k个...原创 2020-02-05 21:05:46 · 633 阅读 · 0 评论 -
判断二叉树是否相同
给定一个插入序列就可以唯一确定一棵二叉搜索树,但是不同的插入序列也可能构成相同的二叉搜索树。例如按2,1,3和2,3,1插入空的二叉搜索树得到的结果都是一样的。输入要求,先输入两个整数,第一个整数代表树的结点个数,第二个整数代表,除了样例外,还要输入的进行比较的序列的个数。1.可以不建树进行判断。先比较第一个数是否相同,若相同,则将后序序列中比第一个数小的数字分成一堆放在该数字之前,将比该数大...原创 2020-02-03 19:42:38 · 701 阅读 · 1 评论 -
平衡二叉树
一 平衡二叉树的定义 二叉树中元素的不同插入顺序会导致不同的深度和平均查找长度ASL,平均查找长度(ASL)等于查找每个元素要进行比较的次数除以元素的总个数。 定义平衡因子(balance factor),BF=Hl-Hr,Hl,Hr分别为左右子树的高度,平衡二叉树(简称AVL),BF的绝对值应小于1。 设含有nh为高度为h的平衡二叉树的最小结点数,则nh=n(h-1)+n(...原创 2020-02-02 12:16:04 · 770 阅读 · 0 评论 -
二叉搜索树(查找,插入,删除)
一.二叉搜索树也称为二叉排序树或二叉查找树,简称为BST。其可以为空,也可以不为空,但满足以下的条件。1 非空左子树的所有键值小于其根节点的键值。2 非空右子树的所有键值大于其根节点的键值。3 左右子树都是二叉搜索树。二.二叉搜索树的特殊操作函数:position find(elementtype x,bintree BST)从二叉树中寻找元素x,并返回元素的地址。positio...原创 2020-02-01 12:00:48 · 236 阅读 · 0 评论 -
二叉树的同构判断
一 题意理解给定两颗树,T1,T2,若T1可以通过若干次的左右子互换变成T2,则称为这两棵树同构。二 输入数据先输入一个N,代表接下来的个数,然后輸入N组元素,分别为节点名称,其左子的序号,右子的序号,若其不存在左子或右子,则输入"-"。例:解题思路1 二叉树表示2 建二叉树3 同构判断1二叉树表示:用结构数组表示二叉树(静态链表)设置数据结构:struct treen...原创 2020-01-30 14:14:51 · 2333 阅读 · 0 评论 -
遍历二叉树的应用
问题一.输出二叉树中的叶节点(左右子都为空)只需在遍历过程中增加一个if语句判断是否为空即可。void preorderprintleaves(Bintree BT){ if(BT){ if(!BT->Left&&!BT->Right) printf("%d",BT->Data); preord...原创 2020-01-29 19:14:10 · 193 阅读 · 0 评论 -
二叉树的遍历.队列与栈实现(深度优先,广度优先)
树的遍历通常有递归和非递归两种形式实现。一.递归实现原创 2020-01-29 11:41:28 · 2108 阅读 · 0 评论