数据结构
战士小小白
作者为在校大三学生,计划考研,每周更新博客,其内容包括但不限于数据结构、计算机组成原理、计算机网络、操作系统、算法、Java、python、数据库...
展开
-
数据结构期末复习代码模板(13 + 1)
数据结构期末、考研、面试代码模板原创 2022-10-12 17:55:17 · 290 阅读 · 0 评论 -
别再说排序难了
插入排序直接插入排序基本思想:依次将待排序序列中的每一个记录插入到已排好序的序列中,直到全部记录都排好序将无序区中的元素依次插入到有序区中待排序记录序列 12 30 25 9 18初始有序区 12 30 25 9 18第1趟排序结果12 30 25 9 18第2趟排序结果12 25 30 9 18第3趟排序结果 9 12 25 30 18第4趟排序结果 9 12 18 25 30void Sort::InsertSort(){ ...原创 2022-01-07 19:40:44 · 943 阅读 · 0 评论 -
数据结构_王道_图_解析
abecd aebcd abcedD 可能存在回路 不一定是最小生成树对于3 如果n个顶点构成环 有(n-1)条边的权值相同 那么最小生成树有(n-1)棵画出图来就能做原创 2021-12-11 16:56:50 · 305 阅读 · 0 评论 -
数据结构_线性表_王道考研
3. 后面全要移动顺序输出这n个元素的值时间复杂度相同交换第3个元素和第4个元素顺序表效率高这种题有时候比较抽象 可以想一个具体的例子来做 10个元素 删除第一个元素 要移动9个元素 10个元素 删除第二个元素 要移动8个元素...原创 2021-12-11 16:56:16 · 687 阅读 · 0 评论 -
数据结构_王道_图_解析
选A BFS不考虑边的权值 BFS类似于树的层序遍历 BFS使用的是队列 DFS使用的是栈选C 由于不连通 只调用一次无法遍历所有结点 所以有几个连通分量就要遍历几次采用邻接表存储 不论是DFS还是BFS 都与要访问顶点和边结点 空间复杂度是因为每个顶点都要进队或者栈一次画出草图来就好了 注意退栈怎么退画出图来就有了...原创 2021-12-10 20:26:13 · 203 阅读 · 0 评论 -
数据结构_王道_图_解析
选B 存什么都行选C选D选D 0代表跟自己选B D选B 每条边存储两次 AOV网是拓扑排序 AOE网是工程图选B B D选B选A选D 若为无向图 邻接表一条边要存储两次 一定为偶数 只有有向图才能有奇数个边表结点 至于图中有多少个结点 这还真不一定选C选B 边表结点最多的情况就是完全图选C 先扫描顶点表找到顶点 时间复杂度O(n) 再删除边O(e) 总共时间复杂度选C选D 选项A不用×2...原创 2021-12-10 17:17:42 · 296 阅读 · 0 评论 -
数据结构_王道_图_解析
路径:由顶点和相邻顶点序偶构成的边所形成的序列D 不一定连通,可能还有孤立结点注意不要选D 只要是连通图就可以C 回路是路径,简单回路是简单路径 存储稀疏图,用邻接矩阵的话会用很多空间浪费掉,而用邻接表更合适,如果是稠密图,用邻接矩阵合适C图和树的区别是逻辑上 不是由于边数的多少来决定次E边的顶点不一定就在次V中,可能无法构成子图无向图的极大连通子图成为连通分量图的遍历是每个顶点只能被访问一次,而且如果该图非连通,从某一顶...原创 2021-12-10 08:58:50 · 693 阅读 · 2 评论 -
数据结构_关键路径
AOV网(activity on edge netwo)(边表示活动的网):在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间。源点:整个工程的开始点,其入度为0。终点:整个工程的结束点,其出度为0。事件 事件含义 v0 工程的开始,事件a0和a1开始 v1 事件a0完成后,事件a2和a4开始 v2 事件a1和a2完成后,事件a3开始 v3 事件a3和a4完成后,工程结束原创 2021-12-09 17:46:20 · 260 阅读 · 0 评论 -
数据结构_Prim
void Prim(int v){ int adjvex[], lowcost[]; for (int i = 0; i < vertexNum; i++) { lowcost[i] = edge[v][i]; adjvex[i] = v; } lowcost[v] = 0; for (int k = 1; k < vertexNum; k++) { j = MinEdge(lowcost, vertexNum); cout << j << .原创 2021-12-09 11:52:40 · 190 阅读 · 0 评论 -
数据结构_邻接矩阵
MGraph(int a[], int n, int e){ int vertexNum = n, edgeNum = e; for (int i = 0; i < vertexNum; i++) //存储顶点 { vertex[i] = a[i]; } for (int i = 0; i < vertexNum; i++) //初始化邻接矩阵 { for (int j = 0; j < vertexNum; j++) { edge[i][j] =.原创 2021-12-08 21:45:59 · 676 阅读 · 0 评论 -
数据结构_顺序栈
栈的初始化SeqStack(){ top = -1;}入栈操作Push(int x){ if (top == StackSize - 1)throw"上溢"; data[++top] = x;}出栈操作Pop(){ int x; if (top == -1)throw"下溢"; x = data[top--]; return x;}取栈顶元素GetTop(){ if (top = -1) throw"下溢异常"; else retu原创 2021-12-06 22:19:23 · 99 阅读 · 0 评论 -
数据结构_树表的查找技术
二叉排序树的查找SearchBST(BiNode* bt, int k){ if (bt->data == nullptr)return nullptr; if (bt->data == k)return bt; else if (bt->data > k)return SearchBST(lchild, k); else return SearchBST(rchild, k);}二叉排序树的插入InsertBST(BiNode* bt, int x).原创 2021-12-05 23:06:51 · 246 阅读 · 0 评论 -
数据结构_单链表
//链表初始化LinkList(){ first = new Node; first->next = nullptr;}//判空Empty(){ if (first->next = nullptr)return1; else return 0;}//单链表的遍历//1.工作指针p初始化//2.重复执行下述操作,直到指针p为空// 2.1 输出节点p的数据域// 2.2 工作指针p后移PrintList(){ Node* p = first-&.原创 2021-12-01 21:19:09 · 644 阅读 · 0 评论 -
数据结构_顺序表
初始化顺序表SeqList(){ int Length = 0;}建立顺序表SeqList(int a[], int n){ if (n > MaxSize)throw"参数非法"; for (int i = 0; i < n; i++ + ) data[i] = a[i]; length = n;}判空Employ(){ if (length == 0)return1; else return 0;}长度Length(){..原创 2021-12-01 12:46:48 · 641 阅读 · 0 评论 -
数据结构_折半查找
//折半查找的非递归算法BinSearch1(){ int mid, low = 1, high = length; //初始查找区间是[1,n] while (low <= high) //当区间存在时 { mid = (low + high) / 2; if (k < data[mid])high = mid - 1; else if (k > data[mid])low = mid + 1; else return mid; //查找成功,..原创 2021-11-30 22:58:16 · 593 阅读 · 0 评论 -
数据结构_顺序查找
SeqSearch(){ int i = length; //从数组高端开始比较 data[0] = k; //设置哨兵 while (data[i] != k) //不用判断下标i是否越界 i--; return i;}原创 2021-11-30 22:48:01 · 195 阅读 · 0 评论 -
数据结构_链表练习题
Java实现:使用带head头的单向链表实现-水浒英雄排行榜管理完成对英雄人物的增删改查操作,注:删除和修改,查找可以考虑学员独立完成,也可带学员完成 第一种方法在添加英雄时,直接添加到链表的尾部 第二种方式在添加英雄时,根据排名将英雄插入到指定位置(如果有这个排名,则添加失败,并给出提示)package com.hspedu.string_;public class SingleLinkedListDemo { public static void main(String[] a.原创 2021-11-29 22:04:58 · 189 阅读 · 0 评论 -
数据结构_BFS
在邻接矩阵存储结构下实现BFS:void BFS(int v){ int w, j, Q[MaxSize]; int front = -1; rear = -1; cout << vertex[v]; visited[v] = 1; Q[++rear] = v; while (front != rear) { w = Q[++front]; for(j=0;j<vertexNum;j++) if (edge[w][j] = 1 && vis原创 2021-11-29 19:22:22 · 157 阅读 · 0 评论 -
数据结构_DFS
在邻接矩阵存储结构下实现DFS:void DFS(){ cout << vertex[v]; visited[v] = 1; for (int j = 0; j < vertexNum; j++) if (edge[v][j] == 1 && visited[j] == 0) DFS(j);}原创 2021-11-29 19:17:15 · 231 阅读 · 0 评论 -
数据结构_Dijkstra算法
算法:Dijkstra算法输入:有向网图G =(V,E),源点v输出:从v到其他所有顶点的最短路径 1.初始化:S = { v }; dist[j] = edge[v][j](0 <= j <= n); 2.重复下述操作直到S等于V: 2.1 dist[k] = min{ dist[i] }(i属于(V - S)); 2.2 S = S + {K}; 2.3 disk[i] = min{ dist[i],dist[k] + e...原创 2021-11-29 19:11:13 · 621 阅读 · 0 评论 -
数据结构_Floyd
用于求每一对顶点之间的最短路径问题算法:Floyd输入:带权有向图G=(V,E)输出:每一对顶点的最短路径 1.初始化:假设从Vi到Vj的弧是最短路径,即dist-1(Vi,Vj)=w<Vi,Vj> 2.循环变量k从0~n-1进行n次迭代: distk(Vi, Vj) = min{distk-1(Vi,Vj),distk-1(Vi,Vk)+distk-1(Vk,Vj)}void Floyd() { int i, ...原创 2021-11-28 19:34:08 · 515 阅读 · 0 评论 -
数据结构_拓扑排序
算法:TopSort输入:有向图 G=(V,E)输出:拓扑排序 1.栈S初始化,累加器count初始化 2.扫描顶点表,入度为零的顶点压栈 3.栈非空循环 3.1j=栈顶元素出栈,输出顶点j,count++ 3.2对j的每一个邻接点k执行如下操作 3.2.1将顶点k的入度减1 3.2.2若顶点k的入度变为0,压栈 4.if(count<vertexNum) cout<<"有回路" void TotSort(){ int i, j, k, coun.原创 2021-11-26 21:59:05 · 340 阅读 · 0 评论