![](https://img-blog.csdnimg.cn/20190915112446953.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 58
数据结构的知识
1900_
你热爱什么,你追求什么,你就成为什么
展开
-
C++|使用int数组实现一个栈类,为这个栈类增加getMaxValue方法
栈原创 2023-08-23 20:51:49 · 177 阅读 · 0 评论 -
链表反转,指定区间反转,k个一组反转---详解
链表操作原创 2022-12-14 16:55:45 · 1895 阅读 · 0 评论 -
线性表插入元素算法(顺序存储)
打字费时间传图片吧原创 2020-10-25 22:14:44 · 1618 阅读 · 1 评论 -
数据结构--串--KMP
先写一点,慢慢补充先记一个最重要的问题:计算next数组这也是考试的重点先看下如何手算next数组了解两个概念:串的前缀 :包含第一个字符,且不包含最后一个字符的子串 串的后缀 :包含最后一个字符,且不包含第一个字符的子串计算公式:当前位置的next数组数值就=当前位置前边的所有字符组成的子串的最长相等前后缀长度+1规定第一个位置的next数组值是0举个简单点的例子:串{a,a,a,b}当指针指向第一个字符的时候,不用算,第一个next是0当指针指向第二个字符的.原创 2020-08-26 22:27:32 · 671 阅读 · 0 评论 -
设计递归算法,删除不带头结点的单链表L中所有值为X的结点
王道上的一道题1、设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点答案如下void Del_X_3(LinkList &L,ElemType x){ LNode *p; if(L==NULL) return ; if(L->data==x){ p=L; L=L->next; free(p); Del_x_3(L,x); } else Del_...原创 2020-07-15 18:23:22 · 7761 阅读 · 26 评论 -
线性表的顺序表示---练习题(算法设计题
存储结构:静态分配#define MaxSize 30typedef struct{ ElemType data[MaxSize]; int Lenth;}SqList;动态分配#define InitSize 50typedef struct{ ElemType *data; int MaxSize,Lenth;}SeqList;题目:1、从顺序表中删除最小值元素(假设唯一)并由函数返回被删除的元素的值,空出的位置由最后一个元素填补,若...原创 2020-05-27 15:24:57 · 3903 阅读 · 3 评论 -
(详解)11年真题:求两个序列合并后的的中位数
(2011年真题)长度为L的升序序列S,在第(L/2)个位置的数称为S的中位数,注意:向上取整,也就是说L=5,则第三个是中位数,两个序列的中位数是指两个序列合并后的的中位数。现给出等长升序序列A和B,试着设计算法,找出A和B的中位数1)给出算法的设计思路2)用c/c++/java描述算法3)说明空间复杂度和时间复杂度解析:(若不想看解析,直接拉到下边是答案)这个问题可能很多人会想到一种方法,因为是升序序列,两个序列合并后长度是2L,我们边扫描边比较并计数,需要比较L次即可得到中位数,也就是说原创 2020-05-26 12:07:20 · 1895 阅读 · 1 评论 -
已知两个长度分别为m 和 n 的升序链表,合并降序链表,求时间复杂度
王道数据结构上一道题:原创 2020-05-11 00:16:37 · 23246 阅读 · 29 评论 -
数据结构 二叉树的递归建立和递归遍历
先序建立 中序建立 后序建立先序遍历 中序遍历 后序遍历求树的深度#include<stdio.h>#include<math.h>#include<stdlib.h>typedef struct node{ char ch; struct node *Lchild; struct node *Rchild;...原创 2018-04-08 22:14:40 · 797 阅读 · 0 评论 -
判断是否为完全二叉树
给定一棵二叉树的先序序列,判断是否是一颗完全二叉树利用队列 代码:#include<stdio.h>#include<malloc.h>#include<string.h>//二叉树 typedef struct{ char ch;}T_ElemType;//树中元素 typedef struct BitNode{ T_ElemTyp...原创 2018-04-15 20:50:01 · 1052 阅读 · 0 评论 -
判断完全二叉树(顺序存储)
Description假如对二叉树T和具有相同高度的满二叉树编号,如果T与满二叉树相同编号的节点位置相同,那么称二叉树T是一棵完全二叉树。现在根据边的连接情况判断一棵树是否是完全二叉树。Input输入分两部分:第一部分:一个整数T,代表测试组数第二部分:接下来有T组数据,每组的第一行有2个整数n(0 < n < 1024)和r(1<=r<=n), 表示结点数...原创 2018-05-04 17:34:01 · 1366 阅读 · 0 评论 -
线索二叉树(C语言)
Description本题中,将会给出一个按照先序遍历得出的字符串,空格代表空的子节点,大写字母代表节点内容。请通过这个字符串建立二叉树,并按照题目描述中算法,中序遍历二叉树并中序线索化二叉树,之后中序遍历输出二叉线索树。在遍历二叉树的过程中,是按照一定的规则将二叉树中的结点排列成一个线性序列,从而得到二叉树中结点的先序序列或中序序列或后序序列。但是,当以二叉链表作为存储结构时,只能找到...原创 2018-05-04 15:34:25 · 1437 阅读 · 5 评论 -
第六章 树和二叉树
终于写到树和图了。。。。我实在是太懒了一些比较基础的东西我就不赘述了,毕竟这是复习不是预习,我就写一些容易混淆需要注意的点定义和术语节点的度:一个节点含有的子树的个数称为该节点的度。二叉树:是每个结点至多有两棵子树的树,且子树有左右之分,次序不可颠倒。节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推。树的深度:树中结点的最大层次称为树的深度。满二叉树:一棵深度为...原创 2019-10-20 11:48:37 · 981 阅读 · 0 评论 -
章节3.4----队列的实现与应用
其实这章再写下去就是无聊的重复了,本质上来讲,栈和队列都是特殊的线性表,而线性表的两种实现方式,顺序和链式,运用到栈和队列上,也就变成了顺序栈和链式栈,顺序队列和链式队列。所以写法都是一样的,唯一不一样的就是规则不一样,栈先进后出,队列先进先出而已。写代码本来就枯燥,写重复的代码更是枯燥 -_-!所以这里关于队列的实现和基本算法我就不再长篇大论了另外前边说过,课本上面给出的代码片是C++和伪...原创 2019-10-12 14:08:38 · 519 阅读 · 0 评论 -
章节3.1和3.2----栈的表示、实现和应用
文章目录1、存储结构 P462、顺序栈1、存储结构 P46typedef struct{ int *base; int *top; int StackSize;}SqStack;2、顺序栈会了顺序表和链表的话,栈就简单的多了下面我给出的这个小例子,里面包含了顺序栈的初始化、压栈、弹栈、遍历操作#include<stdio.h>#include&...原创 2019-09-24 13:57:49 · 655 阅读 · 0 评论 -
中缀表达式转换前缀表达式and中缀表达式转换后缀表达式(利用栈)
转换思路:1、先对输入的字符串进行处理,分割字符串,划分优先级,将多位数的数字存入结构体看做整体,方便后续处理,为各个运算符划分优先级2、创建两个栈,一个是结果栈,一个是运算符栈3、从右至左扫描中缀表达式,如果是数字,就直接压入结果栈若是运算符,则与运算符栈顶元素比较优先级:若该运算符优先级大于等于栈顶元素,则将该运算符入栈否则栈内元素出栈并压入结果栈,再与其比较,直到该运算符...原创 2019-08-07 09:30:58 · 6183 阅读 · 3 评论 -
哈夫曼编码(自底向上的哈夫曼编码)
Description本题中,读入n个字符所对应的权值,生成赫夫曼编码,并依次输出计算出的每一个赫夫曼编码。Input输入的第一行包含一个正整数n,表示共有n个字符需要编码。其中n不超过100。第二行中有n个用空格隔开的正整数,分别表示n个字符的权值。Output共n行,每行一个字符串,表示对应字符的赫夫曼编码。Sample Input85 29 7 8 14 2...原创 2018-12-21 13:20:29 · 3163 阅读 · 0 评论 -
一文看懂二叉搜索树~(又叫二叉查找树) 代码+详解(C/C++)
写了一下午,终于把这个整理完了。。。概念二叉查找树(Binary Search Tree),又被称为二叉搜索树,二叉排序树。为什么叫二叉查找树呢,因为它一般的树不同,它具有如下性质若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值。 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。 它的左、右子树也分别为二叉查找树。 在二叉查找树中,没有值相等的...原创 2018-12-21 18:12:15 · 1270 阅读 · 0 评论 -
【数据结构】进击的二叉查找树
Description给定1~N的两个排列,使用这两个排列分别构建两棵二叉查找树(也就是通过往一棵空树中依次插入序列元素的构建方式)。如果这两棵二叉查找树完全相同,那么输出YES;否则输出NO。之后,输出第一个排列对应的二叉查找树的后序序列、层序序列。Input每个输入文件中一组数据。第一行1个正整数N(1<=N<=30),表示二叉查找树中的结点个数。接下来两行...原创 2018-12-21 14:19:39 · 335 阅读 · 0 评论 -
二叉树的高
Description给定一颗二叉树的先序序列,求该二叉树的高。Input输入包括两部分第一部分:一个正整数n,代表有n颗二叉树第二部分:包括n行,每行代表一颗二叉树的先序遍历序列,空指针用字符^占位Outputn行,每行一个整数,代表对应二叉树的高度Sample Input2ABC^^^^AB^^^Sample Output32求二叉树的高是二叉树...原创 2018-12-21 14:12:10 · 877 阅读 · 0 评论 -
数据结构 统计二叉树中度为0,1和2的结点个数
Description给定先序序列,按照该序列创建对应的二叉树,并输出该二叉树度为0,1和2的结点个数。Input一行,二叉树按先序遍历序列,空指针用字符^占位Output一行,三个整数分别代表该二叉树度为0,1和2的结点个数Sample InputABD^^^CE^^F^^Sample Output3 1 2递归遍历寻找理解递归的思想 就很好理解程...原创 2018-04-08 22:13:05 · 17197 阅读 · 0 评论 -
已知二叉树的后序和中序遍历结果 求前序结果
Description题目很简单,给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)。Input输入有多组数据(少于100组),以文件结尾结束。每组数据仅一行,包括两个字符串,中间用空格隔开,分别表示二叉树的后序和中序序列(字符串长度小于26,输入数据保证合法)。Output每组输出数据单独占一行,输出对应得先序序列。Sample Input...原创 2018-04-24 16:58:03 · 4264 阅读 · 5 评论 -
【数据结构】--章节2.2----线性表的顺序表示和实现
课本P22页 顺序存储结构书上P22页,给出了线性表的动态分配顺序存储结构,如下注意:这里写了一个ElemType,这代表一个元素类型,使用的时候,你可以根据自己需要什么类型来改。typedef struct{ ElemType *elem; //存储空间基址 int lenth; //当前线性表里面存放数据的长度 int listsize; //线性...原创 2019-09-17 19:18:43 · 2130 阅读 · 0 评论 -
【数据结构】严蔚敏版--学习&&复习笔记
-----------------------------------------------------------写在前面:emmmmm,这个数据结构系列博客我会不定时持续更新,会在本文下边给出导航链接 关于实现形式的不同。在本书中给出的伪代码使用了C++部分内容,我在实现这本书中的算法时,我会使用C...原创 2019-09-19 13:26:03 · 6989 阅读 · 11 评论 -
【数据结构】--章节2.3----线性表的链式表示和实现
存储结构 P28typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;原创 2019-09-19 21:27:01 · 886 阅读 · 2 评论 -
数据结构 周末舞会(循环队列解法)
Description假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。Input第一行男士人数m和女士人数n(1<=m,n<=100);第二行舞曲的数目k(1<=k<=...原创 2018-04-05 00:09:48 · 6107 阅读 · 2 评论 -
【数据结构】----将一个链表拆分为两个链表
《算法设计与分析》课堂作业将一个链表拆分为两个链表要求:将一个链表1、2、3、4、5、6、7、8、9、10拆分为1、3、5、7、9和2、4、6、8、10这两个链表思路:方法呢很简单,就是在第一个结点,看第二个是否存在,若存在,就把第二个加入链表2,并在链表1中删去,然后移动到第三个结点,同样的,看第四个存在不,若存在,就加入链表2并删去,继续在第五个结点,判断第六个。。。...原创 2019-09-03 14:22:01 · 10162 阅读 · 3 评论