数据结构
Vivid-victory
○( ^皿^)っHiahiahia…
展开
-
数据结构【清华严蔚敏】——单链表的基本运算
单链表的基本运算如下: (1)初始化单链表head (2)依次采用尾插法插入a,b,c,d,e元素 (3)输出单链表head:a b c d e (4)单链表head长度:5 (5)单链表head为非空 (6)单链表head的第3个元素:c (7)元素a的位置:1 (8)在第4个元素位置上插入f元素 (9)输出单链表head:a b c f d e ...原创 2018-11-09 18:52:48 · 824 阅读 · 0 评论 -
数据结构——求一个串中出现的第一个最长重复子串
补充实验:求一个串中出现的第一个最长重复子串。输入串:36123459836121234569求最长重复子串:原串:36123459836121234569最长重复子串:12345关于这个问题有KMP优化,暂时还没掌握下面这个算法在输入输出方面还有待优化#include <stdio.h>#define MaxSize 100typedef struct { cha...原创 2018-11-26 19:22:16 · 2914 阅读 · 0 评论 -
树和二叉树1——链式二叉树基础
本文代码基于【数据结构】【严蔚敏】【清华大学】包含了大多数二叉树的基本操作1.准备部分的代码:用c++其实就是用了个max()函数#include <stdio.h>#include <stdlib.h>//malloc和exit函数所需头文件 #include <iostream>using namespace std;#define MaxS...原创 2018-12-08 16:27:52 · 222 阅读 · 0 评论 -
树和二叉树2——输出广义表形式(带括号)二叉树
二叉树的基本运算如下(显示的结果):(1)创建二叉树(2)输出二叉树:A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)) (3)H 结点:左孩子为 J 右孩子为 K(4)二叉树 bt 的高度:7(5)释放二叉树 bt如何输出带括号二叉树?这里用的是根结点和其他结点递归函数分离的方式完成的,即在pre_order_traveral_brackets()中运行遍历根...原创 2018-12-08 16:35:57 · 3241 阅读 · 0 评论 -
树和二叉树3——(层次,先序、中序、后序递归非递归)遍历输出二叉树
代码输出结果如下:二叉树 bt:A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))***层次遍历序列:A B C D E F G H I J K L M N先序遍历序列:递归算法:A B D E H J K L M N C F G I非递归算法:A B D E H J K L M N C F G I中序遍历序列:递归算法:D B J H L K M N E A...原创 2018-12-09 12:38:21 · 613 阅读 · 0 评论 -
树和二叉树4——定位结点值为 x 的二叉树结点的层次
问题描述:定位二叉树 bt 中结点值为 x 的结点及其所在的层次。这里只定位了层次,求路径请看下一篇文章:树和二叉树5#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;...原创 2018-12-09 19:55:06 · 2191 阅读 · 2 评论 -
树和二叉树5——先序遍历输出叶子到根的逆路径
问题描述:采用先序遍历方法输出所有从叶子结点到根结点的逆路径。输出结果如下:二叉树 b:A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))先序遍历方法:D 到根结点逆路径: D->B->AJ 到根结点逆路径: J->H->E->B->AL 到根结点逆路径: L->K->H->E->B->AN 到...原创 2018-12-09 20:03:24 · 2405 阅读 · 0 评论 -
图——邻接矩阵和邻接表基本存储及转换算法
代码基于:【数据结构】【严蔚敏】【清华大学】【邻接矩阵和邻接表相互转换算法】问题描述:该算法的设计,要求运行结果如下所示:图 G 的邻接矩阵:0 1 1 0 0 0 0 01 0 0 1 1 0 0 01 0 0 0 0 1 1 00 1 0 0 0 0 0 10 1 0 0 0 0 0 10 0 1 0 0 0 1 00 0 1 0 0 1 0 00 0 0 1 1 0 0...原创 2018-12-23 20:13:11 · 9072 阅读 · 7 评论 -
【数据结构课程设计】题目二:约瑟夫生者死者游戏
约瑟夫游戏的大意:30 个游客同乘一条船,因为严重超载,加上风浪大作,危险万分。因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免于难。无奈,大家只得同意这种办法,并议定30 个人围成一圈,由第一个人数起,依次报数,数到第 9 人,便把他投入大海中,然后再从他的下一个人数起,数到第 9 人,再将他投入大海中,如此循环地进行,直到剩下 15 个游客为止。问:哪些位置是将被扔下...原创 2019-03-05 20:28:33 · 6932 阅读 · 1 评论 -
【数据结构】【啊哈算法】堆排序(小根堆,大根堆分别实现从小到大排序)
本文章主要目的是分享代码,不含堆知识的详细介绍代码1小根堆实现从小到到排序:每次删除并输出(直接输出或存放于数组)顶部元素,维护此时的小根堆,反复上行操作,直到堆为空为止#include <bits/stdc++.h>using namespace std;int h[101],n;void siftdown(int i){ int t,flag=0; whil...转载 2019-03-25 20:20:28 · 5694 阅读 · 0 评论 -
【数据结构课程设计】题目三:用堆实现优先队列1.0(基于啊哈算法的尝试解题思路)
设计要求:按照菜单内容实现优先队列的一些基本操作。说明:使用顺序存储结构实现。菜单内容:1. 优先队列的插入操作2. 最大优先级元素出队列操作3. 调整优先队列某个元素的优先级4. 求优先队列的长度5. 优先队列的查询操作6. 退出系统请选择:1 – 6:一、用数组存储堆用数组存储堆,那么数组中值本身大小就是优先级1.先要构造一个堆这里返回...原创 2019-04-01 22:04:09 · 1170 阅读 · 0 评论 -
【数据结构课程设计】题目四:求二叉树上结点的路径
设计要求:在采用链式存储结构存储的二叉树上,以bt指向根结点,p指向任一给定的结点,编程实现求出从根结点到给定结点之间的路径。菜单内容:1.建立二叉树存储结构2. 求二叉树的前序遍历3. 求二叉树的中序遍历4. 求二叉树的后序遍历5. 求指定结点的路径6. 退出系统 请选择:1 – 6:提示:【采用非递归遍历的方法】二叉树的建立 2. 求指定结点的路径 3. 二叉树的前、中...原创 2019-06-30 15:04:49 · 4983 阅读 · 0 评论 -
【数据结构课程设计】题目五:交通咨询系统设计(经典最短路问题)
题目五:交通咨询系统设计设计要求:设计一个咨询交通系统,能让旅客咨询从任一个城市到另一个城市之间的最短路径(里程)、最低费用或者最少时间等问题。对于不同的咨询要求,可以输入城市间路程、所需时间或者所需费用。设计分3个部分:1、 建立交通网络图的存储结构;2、 解决单源最短路径问题;3、 实现两个城市之间的最短路径问题。1、直接用二维数组存放图的信息注意图是有向图还是无向图voi...原创 2019-05-14 20:11:24 · 17022 阅读 · 6 评论 -
数据结构——稀疏矩阵的转置算法
本篇文章的代码基于【数据结构】【严蔚敏】【清华大学】不是很想分函数来一遍解释信息基本上都在注解里直接上完整代码好了#include <stdio.h> #include <stdlib.h>#define MAXSIZE 100 // 非零元个数的最大值typedef int ElemType; typedef int Status; #define OK...原创 2018-12-02 15:29:06 · 640 阅读 · 0 评论 -
C++——设计队列类和循环队列类
设计队列类和循环队列类要求:能够设计队列类和循环队列类,实现存储和取数功能。Append:加入队列,将一个元素加入到队列的后面Get:读取队列,从队列前面读取并删除一个元素IsEmpty:判断队列是否为空IsFull:判断队列是否已满Traverse:遍历,从头至尾访问队列的每个单元Clear:清除,使队列为空非循环静态分配空间队列类基本操作如下:#include <io...原创 2018-11-18 16:57:43 · 3185 阅读 · 0 评论 -
数据结构——递归求数字旋转方阵
【数字旋转方阵问题】问题描述:输出下图所示N×N(N≥1)的数字旋转方阵。要求:采用递归法实现。提示:注意观察A、B、C、D四个区域。void FillInNum(int number, int begin, int MatrixSize){ // 从数字number开始填写, 例如从1开始填写;// MatrixSize为N维方阵,第一个填充的左上角的下标为(begin, beg...原创 2018-11-18 14:46:27 · 1378 阅读 · 0 评论 -
数据结构【清华严蔚敏】——顺序表的基本运算
顺序表的基本运算如下: (1)初始化顺序表L (2)依次插入a,b,c,d,e元素 (3)输出顺序表L:a b c d e (4)顺序表L长度:5 (5)顺序表L为非空 (6)顺序表L的第3个元素:c (7)元素a的位置:1 (8)在第4个元素位置上插入f元素 (9)输出顺序表L:a b c f d e (10)删除L的第3个元素 (11)输出顺序表L:...原创 2018-11-09 18:48:59 · 3894 阅读 · 0 评论 -
数据结构——求单链表排序
求单链表排序集合的运算如下:原 集 合A: c a e h原 集 合B: f h b g d a有序集合A: a c e h有序集合B: a b d f g h代码中包含三个关于排序的自定义函数,均是冒泡排序排序方法1:交换结点,多定义了一个指针排序方法2:交换数据,结点不变排序方法3:参考网上代码,优化交换结点排序#include &lt;stdio.h&gt;#inclu...原创 2018-11-10 15:53:15 · 282 阅读 · 0 评论 -
数据结构——求集合(单链表)的并、交和差运算:
求集合(用单链表表示)的并、交和差运算:问题描述:该算法的设计,要求运行结果如下所示:(包含三种排序)集合的运算如下:原 集 合A: c a e h原 集 合B: f h b g d a有序集合A: a c e h有序集合B: a b d f g h集合的并C: a b c d e f g h集合的交C: a h集合的差C: c e#include <stdio.h&g...原创 2018-11-10 16:01:07 · 13065 阅读 · 0 评论 -
数据结构——从顺序表中删除重复的元素
问题描述:设计一个算法从顺序表中删除重复的元素,并使剩余元素间的相对次序保持不变。例如:原顺序表为{4 2 8 4 2 1 2 1 3 5 2},执行该算法后,顺序表为:{4 2 8 1 3 5}。另外,顺序表的初始值通过调用算法initRandomize(int *arr, int n, int min, int max)产生。关于rand(),srand()相关基础知识参考以下内容:...转载 2018-11-10 17:18:57 · 16892 阅读 · 0 评论 -
数据结构——栈与队列操作(用栈模拟队列)
【栈与队列操作】问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈、出栈、判栈满和判栈空操作:void Push(S,x);Elemtype Pop(S);bool StackFull(S);bool StackEmpty(S);现用这两个栈构成一个队列,实现入队列、出队列操作的算法:bool EnQueue(x);Elemtype DeQueue(S);要求:(1)设...原创 2018-11-13 20:27:31 · 883 阅读 · 0 评论 -
【递归】数据结构——栈的应用(递归经典:Hanoi汉诺塔)
代码来源于:【数据结构】【严蔚敏】递归经典问题:汉诺塔(插个题外话哈,Hanoi是越南首都河内)思路(关键理解点):假设只有两个盘子(实在没法完全理解全部过程的,把两个盘子的过程捋清楚了,代码也就记住了)(n=2,x=a,y=b,z=c){hanoi(1,x,z,y);{move(x,1,z)//这里的z在(n=2,x=a,y=b,z=c)实际为b盘1号盘:a-&amp;amp;gt;b}m...转载 2018-11-11 19:18:52 · 363 阅读 · 0 评论 -
数据结构——顺序栈(动态分配空间)的基本操作
代码主要来源:【数据结构】【清华大学】【严蔚敏】顺序栈S的基本运算如下:(1)初始化栈S(2)栈为空(3)依次进栈元素a,b,c,d,e(4)栈为非空(5)出栈序列:e d c b a(6)栈为空(7)释放栈完整代码如下:#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt; #define STACK_INIT_SIZE转载 2018-11-11 20:29:52 · 1907 阅读 · 0 评论 -
数据结构——循环队列(动态分配空间)基本运算
代码主要来源:【数据结构】【清华大学】【严蔚敏】循环队列基本运算如下:(1)初始化队列Q(2)依次进队列元素a,b,c(3)队列为非空(4)出队一个元素a(5)依次进队列元素d,e,f(6)出队列序列:b c d e f(7)释放队列完整代码如下:#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#define OK转载 2018-11-11 21:50:56 · 1282 阅读 · 0 评论 -
数据结构——链队列的基本算法
代码主要来源:【数据结构】【清华大学】【严蔚敏】关于栈和队列的基本操作概括起来主要的内容有以下八种:构造、销毁置空、判空取头、求长输入、输出下面的代码包括了基本八种外加一个Status QueueTraverse(LinkQueue Q,void(*vi)(QElemType))函数//++++++++++++++++++++ 链队列 +++++++++++++++++++++++...转载 2018-11-11 22:21:17 · 1545 阅读 · 0 评论 -
数据结构——静态顺序栈的基本操作
代码主要来源:【数据结构】【清华大学】【严蔚敏】/代码背景是基于书上的,可内容确实是自己理解后敲的,这不禁让人思考(纠结)原创的定义了/顺序栈S的基本运算如下:(1)初始化栈S(2)栈为空(3)依次进栈元素a,b,c,d,e(4)栈为非空(5)出栈序列:e d c b a(6)栈为空(7)释放栈//本题静态栈,不用有释放空间的步骤,非要释放可以用memset(a,0,MAXSI...原创 2018-11-17 21:12:14 · 598 阅读 · 0 评论 -
数据结构——有关于栈和队列的小归纳
一、这里总结下栈和队列分类方法:按分配存储空间分:动态分配空间、静态分配空间;按存储结构(物理结构)分:顺序存储、链式存储;二、链式都是动态分配存储空间,所以一共有六类:1、动态分配空间的顺序栈(写过,是书上主推的方法)2、静态分配空间的顺序栈(写过,方法简单易懂)3、动态分配空间的链式栈(没写过,关键是用头插法倒序)4、动态分配空间的循环队列(写过,书上主推写法之一,这里动态分...原创 2018-11-17 21:19:52 · 203 阅读 · 0 评论 -
数据结构——八皇后递归解法
代码来源:https://www.cnblogs.com/houkai/p/3480940.html参考代码:(注解多为自己填写)#include <iostream>#include <stdlib.h> using namespace std;//k为第几行,a[k]为第几列 bool check_2 (int a[],int n){ for(i...转载 2018-11-18 15:58:36 · 380 阅读 · 0 评论 -
数据结构——递归法求解栈中最大值和最小值
【递归法求解最大值和最小值】问题描述:若一个无序的线性表A[MaxSize]采用顺序存储方式,元素类型为整型数。试写出递归算法求出A中的最大元素和最小元素。要求: 顺序表的数据通过调用算法initRandomize()随机产生。#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#define OK 1#define ERROR 0#de...原创 2018-11-18 13:53:11 · 2525 阅读 · 1 评论 -
【数据结构课程设计】题目三:用堆实现优先队列2.0(更符合实际情况的版本)
设计要求:按照菜单内容实现优先队列的一些基本操作。说明:使用顺序存储结构实现。菜单内容:优先队列的插入操作最大优先级元素出队列操作调整优先队列某个元素的优先级求优先队列的长度优先队列的查询操作退出系统请选择:1 – 6:—前言—①之前这题思路摸索阶段写的博客链接:https://blog.csdn.net/qq_41856733/article/details/88957...原创 2019-05-14 20:30:07 · 918 阅读 · 0 评论