数据结构
liuxiaocs7
这个作者很懒,什么都没留下…
展开
-
Binary Tree[二叉树]
树里的每一个节点有一个根植和一个包含所有子节点的列表。从图的观点来看,树也可视为一个拥有N 个节点和N-1 条边的一个有向无环图。二叉树是一种更为典型的树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。树的遍历前序遍历前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。中序遍历中序遍历是先遍历左子树,然后访问根节点,然后...原创 2020-04-21 12:11:55 · 165 阅读 · 0 评论 -
MOOC 03_02 List Leaves
队列直接使用的是讲义中的。本题采用结构数组存放树节点相关信息。可参考读取相关的数据进入节点,最后根据队列层序遍历即可从上到下,从左到右得到叶节点的输出。关键是通过队列这一数据结构实现,根节点入队,,出队时其左右儿子入队。#include <iostream>using namespace std;const int MAXSIZE = 10;const int ...原创 2018-10-17 18:52:18 · 179 阅读 · 0 评论 -
数组和广义表 讲义实现
一般都是采用顺序存储的方式来表示数组。两种顺序储存方式以行序为主序存储以列序为主序储存无论是行优先还是列优先开始节点的存放地址维数和每维的上下界每个数组元素所占用的空间数多维数组时行优先:从右到左列优先:从左到右矩阵的压缩存储为多个相同的非零元素只分配一个存储空间,对零元素不分配空间。对称矩阵三角矩阵对角矩阵稀疏矩阵template <c...原创 2018-10-23 20:33:25 · 285 阅读 · 0 评论 -
实验五 图的操作
实验代码#include <iostream>using namespace std;const int MAX_VERTEX_NUM = 20; //矩阵一个维度上的顶点const int MAX = 65535; //表示矩阵中没有边相连//int visited[MAX_VERTEX_NUM] = {0}; //标记是否被访问const int Q...原创 2018-11-24 16:02:21 · 421 阅读 · 0 评论 -
实验三 树的应用
// BTreeFinal.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"/*** 树的构建和遍历实现** 需要借助栈和队列来实现*/#include <iostream>using namespace std;const int STACK_INIT_SIZE = 20; //顺序栈容量const int QUEUE...原创 2018-11-24 16:31:10 · 271 阅读 · 0 评论 -
邻接矩阵和邻接表空间问题
设有NNN个个节点,使用邻接矩阵存储时,顶点数组占NNN块空间,而邻接矩阵占N2N^2N2块空间。故使用邻接矩阵所需要的总空间为N+N2N + N^2N+N2在使用邻接表的时候,顶点数组中同时有数据域和指针域,占用2N2N2N空间,边节点假设有2E2E2E个(每条边都会出现两次),每个边节点有存储节点序号的数据域和指向下一个节点的指针域共占用4E4E4E块空间。故使用邻接矩阵所需要的总空间为2...原创 2019-04-06 14:03:00 · 4129 阅读 · 2 评论 -
邻接表遍历的时间复杂度
如果是无向图,则遍历时先访问顶点数组的各个元素,再访问其对应的边链表,由于有NNN个节点,而且无向图的EEE条边在边链表中会出现两次共为2E2E2E次,故一共的访问次数为N+2EN+2EN+2E如果是有向图,则其EEE条边在边链表中不会出现两次(因为此时边链表值代表出度或者入度),共总共的访问次数为N+EN+EN+E次,故时间复杂性为O(N+E)O(N+E)O(N+E)...原创 2019-04-06 14:11:02 · 16044 阅读 · 1 评论 -
DFS时间复杂度
DFS算法是一一个递归算法,需要借助一个递归工作栈,故它的空间复杂度为O(N)O(N)O(N)。遍历图的过程实质上是对每个顶点查找其邻接点的过程,其耗费的时间取决于所采用结构。邻接表表示时,查找所有顶点的邻接点所需时间为O(E)O(E)O(E),访问顶点的邻接点所花时间为O(N)O(N)O(N),此时,总的时间复杂度为O(N+E)O(N+E)O(N+E)。邻接矩阵表示时,查找每个顶点的邻接...原创 2019-04-06 14:23:09 · 26193 阅读 · 3 评论 -
BFS时间复杂度
BFS是一种借助队列来存储的过程,分层查找,优先考虑距离出发点近的点。无论是在邻接表还是邻接矩阵中存储,都需要借助一个辅助队列,N个顶点均需入队,最坏的情况下,空间复杂度为O(N)O(N)O(N)。邻接表形式存储时,每个顶点均需搜索一次,时间复杂度T1=O(N)T1=O(N)T1=O(N),从一个顶点开始搜索时,开始搜索,访问未被访问过的节点。最坏的情况下,每个顶点至少访问一次,每条边至少访问...原创 2019-04-10 13:05:43 · 17427 阅读 · 0 评论 -
数据结构 浙大MOOC--树(下)
堆的两个特性结构性:用数组表示的完全二叉树任意节点的关键字是其子树所有节点的最大值(或最小值)最大堆(MaxHeap)也称“大顶堆”:最大值最小堆(MinHeap)也称“小顶堆”:最小值也就是从根节点到任意节点路径上节点序列的有序性ADT最大堆的操作最大堆的创建typedef struct HeapStruct *MaxHeap;struct HeapStruct...原创 2018-10-19 16:16:57 · 306 阅读 · 0 评论 -
MOOC 树的同构
原题链接思路二叉树表示采用结构数组表示二叉树:静态链表#define MaxTree 10 //结构数组的最大容量#define ElemType char#define Tree int#define Null -1//结构数组表示树,静态链表struct TreeNode{ ElemType Element; //节点的值,此处为字符型 Tree Lef...原创 2018-10-16 20:06:29 · 228 阅读 · 0 评论 -
链栈 讲义实现
#include &lt;iostream&gt;using namespace std;typedef int Status;const int OK = 1;const int ERROR = 0;template &lt;class T&gt;struct Node{ T data; Node&lt;T&gt; *next;};template &lt;clas原创 2018-10-04 23:53:29 · 144 阅读 · 0 评论 -
顺序栈 讲义实现
顺序栈的基本实现及应用数制转换//数制转换(十进制转八进制)int conversion(int num){ //对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数 SqStack<int> s; int e = 0; int result = 0; while(num) { s.Push(num % 8); num /= 8; } wh...原创 2018-10-05 17:36:43 · 138 阅读 · 0 评论 -
队列 讲义实现
顺序队列基本操作和顺序链表和顺序栈差不多,注意其有两个指针,头尾指针头出(删除元素)尾进(添加元素)实现#include &lt;iostream&gt;using namespace std;const int QUEUE_INIT_SIZE = 20;const int OVERFLOW = 0;const int ERROR = 0;const int OK = 1;...原创 2018-10-05 21:02:25 · 187 阅读 · 0 评论 -
数据结构 实验一 线性表的应用
#include &lt;iostream&gt;using namespace std;const int MAXSIZE = 20;const int ERROR = 0;const int OK = 1;typedef int Status;//顺序表实现//template &lt;typename T&gt;typedef struct Student{ i...原创 2018-10-06 13:49:11 · 687 阅读 · 0 评论 -
数据结构 浙大MOOC--树(中)
二叉搜索树的查找操作查找从根节点开始,如果树为空,返回NULL,如果搜索树非空,则根节点关键字和X进行比较,并进行不同处理:如果x小于根节点键值,只需在左子树中继续搜索如果x大于根节点的键值,在右子树中进行继续搜索若两者比较结果是相等,搜索完成,返回指向此节点的指针//二叉搜索树的查找操作//递归实现Position Find(ElementType X, BinTree B...原创 2018-10-17 21:38:35 · 205 阅读 · 0 评论 -
数据结构 作业 --栈和队列
刚开始题目看了半天,没看懂。。。其实就是将SH混合字符串输出为SSSHHH的形式思路遍历遇到H入栈暂存,遇到S直接添加到输出字符串中//火车入栈问题//使用顺序栈char* TrainSeat(char *out, const char *in){ SqStack&lt;char&gt; seatStack; int i = 0; while (*in != '\0') {...原创 2018-10-06 23:17:19 · 317 阅读 · 0 评论 -
顺序表 讲义实现
template &lt;class T&gt;class SqList{public: SqList(); ~SqList(); void InputList(); void OutputList(); Status ListInsert_Sq(int i, T e); Status ListDelete_Sq(int i, T &amp;e);private: T ...原创 2018-10-13 16:09:08 · 123 阅读 · 0 评论 -
链表 讲义实现
链表的结构表示template <class T>struct Node{ T data; Node<T> *next; //Node(Node<T> *ptr=NULL):next(ptr){}};template <class T>class LinkList{public: LinkList(); ~LinkLi...原创 2018-10-13 19:55:29 · 133 阅读 · 0 评论 -
数据结构 浙大MOOC 树-上
静态查找方法1:顺序查找基本思想:Tb1[0]中存放的是待查找元素K,从表尾开始查找,如果当前元素Tb1-&amp;amp;gt;Element[i]与待查找的元素K相等,返回当前下标,否则会一直查找到第一个元素(即数组下标为0的元素)返回的是0;表明查找失败,最坏情况是遍历一遍整个数组,即顺序查找算法的时间复杂度为O(n).//在表Tb[1]~Tb[n]中查找关键字为K的数据元素int Sequent...原创 2018-10-16 00:31:37 · 247 阅读 · 0 评论 -
串 讲义实现
空串:长度为0的空串空白串:长度为1的空白串原创 2018-10-09 22:06:05 · 272 阅读 · 0 评论 -
数据结构 实验二 栈和队列的应用
参考文献#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;using namespace std;const int ERROR = 0;const int OK = 1;const int EMPTY = 1;typedef int Status;template &amp;amp;amp;lt;class T&amp;amp;amp;gt;struct Node{原创 2018-10-12 00:37:50 · 1461 阅读 · 0 评论