数据结构
数据结构相关笔记
兔唧唧不秃
这个作者很懒,什么都没留下…
展开
-
数据结构期末复习
数据结构期末复习一、基本概念1.数据结构的基本概念1.1数据结构2.算法的基本概念2.1 什么是算法2.2 算法的特性3.算法分析3.1算法的时间复杂度3.2算法的空间复杂度二、线性表2.1 线性表2.2 线性表的顺序存储结构——顺序表2.2.1 顺序表的特点2.2.2 元素的存储地址2.2.3 顺序表的实现2.3 线性表的链接存储结构2.3.1 单链表2.3.2 单链表的实现2.4 顺序表与链表的比较2.4.1 存储分配方式2.4.2 空间性能比较2.4.3 时间性能比较2.4.4 结论三、栈和队列3.原创 2022-02-15 12:08:43 · 615 阅读 · 0 评论 -
栈与队列练习
栈与队列练习不带头结点链队列题目代码顺序栈排序题目代码进制转换题目代码不带头结点链队列题目假设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。试设计相应的入队和出队的算法。代码顺序栈排序题目代码进制转换题目代码...原创 2021-10-07 17:31:17 · 161 阅读 · 0 评论 -
图——邻接矩阵的实现
图——邻接矩阵的实现构造深度遍历广度遍历const int MaxSize = 10;template<class T>class MGraph{public: MGraph(T a[],int n,int e); ~MGraph(); void DFTraverse(int v); void BFTraverse(int v);private: T vertex[MaxSize]; int edge[MaxSize][MaxSize];原创 2021-11-25 12:48:02 · 350 阅读 · 0 评论 -
前缀、真前缀、后缀、真后缀
前缀、真前缀、后缀、真后缀前缀:前k个字符组成的子串,1≤k≤n“abcab”的前缀有:“a”,“ab”,“abc”,“abca”,“abcab”后缀:后k个字符组成的子串,1≤k≤n“abcab”的后缀有:“b”,“ab”,“cab”,“bcab”,“abcab”真前缀、真后缀,这个名字跟数学有个概念很像啊----真子集真子集:不包括本身的子集真前缀、真后缀也同理:不包括本身的前缀、后缀子串“abcab”的真前缀有:“a”,“ab”,“abc”,“abca”“abcab”的真后缀有:“b原创 2021-10-09 10:54:17 · 1800 阅读 · 0 评论 -
线性表练习题
线性表练习题顺序表与单链表对比题目答案顺序表有序插入题目代码就地逆置题目代码删除有序单链表某区间元素题目代码顺序表与单链表对比题目请说明顺序表和单链表有何优缺点,并分析下列情况采用何种存储结构更好些。①若线性表的总长度基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素。②如果n个线性表同时并存,并且在处理过程中各表的长度会动态发生变化。答案顺序表:优点:1.无需为表示表中元素之间的逻辑关系而增加额外的存储空间2.随机存取:可以快速存取表中任一位置的元素缺点:1原创 2021-10-07 14:42:04 · 808 阅读 · 0 评论 -
数据结构——树
数据结构——树孩子兄弟表示法孩子兄弟表示法#include <iostream>using namespace std;const int Max = 20;struct TNode{ char data; TNode *firstchild, *rightsib;};class Tree{public: Tree( ); ~Tree( ){Release(root);} //析构函数,释放各结点的存储空间 void PreOrder()原创 2021-11-07 11:39:01 · 91 阅读 · 0 评论 -
最短路径——Dijkstra、Floyd
最短路径Dijkstra代码Floyd代码Dijkstra代码const int INF = 100;int Min(int dist[], int vertexNum){ int i,k; for(i = 0,k = 0;i<vertexNum; i++) if((dist[i]!=0)&&(dist[i]<dist[k])) k=i; return k;}void Dijkstra(int v){ int num,dist[MaxSize];原创 2021-12-02 10:17:10 · 606 阅读 · 0 评论 -
线性表的链式存储结构——双链表
线性表的链式存储结构——双链表原创 2021-10-06 11:03:53 · 177 阅读 · 0 评论 -
线性表的链式实现——单链表
顺序表的链式实现无参构造判空遍历求单链表长度按位查找按值查找插入操作建立单链表头插法尾插法删除操作析构函数完整代码template<typename DataType>class LinkList{public: LinkList(); LinkList(DataType a[],int n); ~LinkList(); int Length(); DataType Get(int i); int Locate(DataType x); void Insert(int i,D原创 2021-10-05 23:48:37 · 289 阅读 · 0 评论 -
BF算法与KMP算法
KMP算法BF算法KMP算法概念代码要了解KMP算法首先要了解BF算法。BF算法BF算法就是暴力匹配,即从主串的第一个字符开始于模式串的第一个字符进行比较。若相等则继续比较两者后续的字符;否则从主串的第二个字符开始和模式串的第一个字符进行比较。重复上述过程,直至主串和模式串中的所有字符比较完毕。来看一下"ababc"与"ababaababcb"字符串匹配的过程:仔细观察一下发现,第2趟和第4趟实际是没有必要的,而KMP算法就是把这些没有必要的趟都略过去。KMP算法概念来看KMP算法下的"a原创 2021-10-08 22:31:26 · 290 阅读 · 0 评论 -
栈——顺序栈的实现
顺序栈的实现入栈出栈const int StackSize = 10;template<typename DataType>class SeqStack{public: SeqStack(); ~SeqStack(); void Push(DataType x); DataType Pop(); DataType GetTop(); int Empty();private: DataType data[StackSize]; int top;};入栈templa原创 2021-10-06 23:29:35 · 89 阅读 · 0 评论 -
KMP算法计算next代码理解
KMP算法计算next代码理解顺代码思路要了解以下几个问题1.为什么比较T[j]和T[k]就行了?2.k要回溯到哪个位置?这一篇主要讲计算next代码的理解,默认已经会手算next,如果不会先看看下面这一篇:手算next的理解要理解一段代码,最简单的就是跟着代码走一遍顺代码思路可以看出,j的作用相当于是遍历整个字符串,当长度为0、1、2… …而k的作用则是计算相应长度下的next值。比较T[j]与T[k],如果相等,j后移,k加一;否则,j不动,k回溯。、要了解以下几个问题接下来要了解以原创 2021-10-21 12:42:36 · 239 阅读 · 0 评论 -
线性表的顺序存储结构实现
顺序表的实现遍历按位查找按值查找插入操作删除操作完整代码const int MaxSize=100;template<typename DataType>class SeqList{public: SeqList(); SeqList(DataType a[],int n); ~SeqList(); int Length(); DataType Get(int i);//按位查找 int Locate(DataType x);//按值查找 void Insert(int i原创 2021-10-05 18:47:00 · 147 阅读 · 0 评论 -
循环队列的实现
循环队列的实现构造函数析构函数入队出队取队头完整代码const int QueueSize = 100;template<class T>class CirQueue{public: CirQueue(); ~CirQueue(); void EnQueue(T x); T DeQueue(); T GetHead(); int Empty();private: T data[QueueSize]; int front,r原创 2021-10-09 18:57:21 · 175 阅读 · 0 评论