![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
不想秃头爱敲码的小姐姐
为脱发做出巨大贡献的不脱发小姐姐
展开
-
两个非降序的顺序表连接
核心思想:新建一个顺序表Lc,从一个顺序表La取出一个元素,再从另一个顺序Lb表出取出一个元素,进行比较,将小的元素放到Lc中。bool MergeList(Sqlist La,Sqlist Lb,Sqlist &Lc){ Lc.length=La.length+Lb.length; Lc.elem=(ElemType *)malloc(Lc.length*sizeof(ElemTy...原创 2019-03-29 20:46:37 · 301 阅读 · 0 评论 -
图的遍历--广搜bfs(邻接矩阵)
广度优先搜索:从一个顶点出发,访问该顶点的所有邻接点,直到该顶点的所有邻接点访问完,再访问第一个邻接点的所有邻接点,直到所有的顶点被访问完。类似树的层次遍历。例如:广度搜索遍历:A B C D E F G H 广搜算法:从顶点A出发,访问A的所有邻接点B和C,然后再访问B的所有邻接点D,E然后依次进行遍历。我们可以看到先遍历的点,总是先遍历它的邻接点,所以我们可以用队列来进行记录...原创 2019-05-12 21:05:40 · 419 阅读 · 0 评论 -
静态查找--顺序表
查找: 静态查找:只查找某个特定的元素是否在表中,或查找它的属性。(就是通常所说的查找) 动态查找:在查找表中国插入,删除一个元素,对表进行操作。顺序表的查找一般的查找:从头到尾的遍历查找int Find(Sqlist L,int key){//平均查找长度为(n+1)/2 int i; L.date[0]=key;//设置监视哨 for(i=L.length;...原创 2019-05-23 21:01:36 · 394 阅读 · 0 评论 -
动态查找---二叉排序树
二叉排序树:若它的左子树不为空,则左子树上所有结点均小于根节点的值。若它的右子树不为空,则右子树上所有结点均大于根节点的值。它的左,右子树分别也是二叉排序树注: 因此,二叉排序树中序遍历是有序序列。 查找: 每次和根结点进行比较,若根结点的值等于key,返回true,若根节点的值大于key,则访问根的左子树,否则访问右子树。(类似折半查找)bool Search(BiTree ...原创 2019-05-23 21:56:18 · 494 阅读 · 0 评论 -
交换排序---快速排序
快速排序: 是对起泡排序的一种改进。 基本思想: 通过一次排序将序列分割成两个部分,一部分都比关键字大,一部分都比关键字小,进而继续对这两个子序列进行相同的操作。(通过递归)具体做法:每次可以将第一个元素设置为“分割元素temp”,附设两个指针,分别指向序列的头low和尾high。首先从high所指的位置向前查找第一个小于temp的元素与low所指的元素进行交换,然后从low所指的位...原创 2019-05-30 22:30:16 · 143 阅读 · 0 评论 -
选择排序--简单,堆排序
简单选择排序:每次在n-i个序列中选择出关键字的最小的,并和第i个元素进行交换。时间复杂度为O(n2),空间复杂度为O(1),是不稳定排序。(红色的4排序前在黑色的4前面,但排序后红色的4在黑色的4后面,不稳定)#include<iostream>using namespace std;//每次选出关键字最小的与之交换 void SeletctSort(int a[],...原创 2019-06-03 22:41:34 · 241 阅读 · 0 评论 -
插入排序--直接,折半,希尔排序
直接插入排序基本思想: 利用顺序查找,在a[1…i-1]有的序列中查找a[i]的插入位置。算法思想:1>在顺序表中查找a[i]的位置k;2>将a[k+1…i]的元素往后移一个位置;3>将a[i]放在a[k]的位置上;优化: 可以在比较的同时进行移动,然后直接放到最终的位置。算法分析: 是一种稳定的排序方法,时间复杂度为o(n2),空间复杂度为O(...原创 2019-06-10 21:48:05 · 386 阅读 · 0 评论 -
归并排序
归并: 是将两个或两个以上的有序序列合并成一个新的有序序列。(之前对于合并两个非降序的序列就使用到了归并排序的思想,可以参考博客https://blog.csdn.net/weixin_42917994/article/details/88901845 - 归并思想(递归算法): 将一个序列进行一分为二,接着对于两个子序列分别在进行一分为二,重复此过程,直到该序列只剩下一个元素,然后与相邻的序列进...原创 2019-07-04 14:51:15 · 185 阅读 · 5 评论 -
迪杰斯特拉算法---求解最短路径
迪杰斯特拉算法: 从图中顶点a开始,查找与该顶点相连接的最短的边用于查找从单源点到图中其他源点的最短路径问题。原创 2019-07-05 14:12:35 · 2191 阅读 · 1 评论 -
图的遍历——深搜dfs(邻接矩阵)
深度优先搜索:从图的一个顶点开始,一直往下搜索,直到遇到已经访问过的顶点进行返回。(类似树的先根遍历)例如:深搜输出:A B D H E C F G深搜算法:从顶点A出发,找A的邻接点B,再找B的邻接点,依次往下进行···直到到E的时候,E的邻接点是B,B已经访问过,所以进行访问E上一个邻接点的其他邻接点,所以需要一个标记该顶点是否被访问过。而且该过程明显是一个递归的过程。另外,如...原创 2019-05-12 20:43:43 · 1973 阅读 · 0 评论 -
图的创建——邻接矩阵
图:是一种较线性表和树更加复杂的数据结构。图中任意两个元素之间都有可能有关系。数组表示法:用一维数组存放顶点,一个矩阵存放关系(边),再加上顶点数和边数#define MAX 100typedef char ElemType;typedef enum{ DG=1,DN,UDG,UDN}GraphKind;//有向图,无向图,有向网,无向网typedef struct{ in...原创 2019-05-12 19:50:07 · 3086 阅读 · 0 评论 -
删除线性表中多余元素
问题:算法1:由于是顺序表进行删除要进行大量移动,时间复杂度比较大,所以选算法2较好。#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct{ ElemType *elem; int length; int listsize;}Sqlist;bool Createli...原创 2019-03-29 20:59:18 · 902 阅读 · 0 评论 -
两个非降序单链表的连接
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType elem; LNode *next;}LNode;typedef LNode* LinkList;//相当于*linkList,即char *a;的结构,相当于数组void Cr...原创 2019-03-29 21:04:51 · 383 阅读 · 0 评论 -
数据结构的线性表之顺序表
数据结构———线性表线性表:一个线性表是n个数据元素的有序排列,是最常用,最简单的数据结构,线性表分别顺序表和链表。顺序表:表示用一组地址连续的存储单元依次存储数据元素,第i个元素的存储位置满足LOC(ai)=LOC(a1)+(i-1)*L。L位每个元素所占的存储单元。a1是顺序表第一个元素所占的存储位置,也称为起始地址或基地址。因为每个元素的下标都可以求出来,所以是随机存取。数据定义:...原创 2019-03-29 08:52:06 · 161 阅读 · 0 评论 -
数据结构——链表
链表:用任意的存储单元存储线性表的数据元素(存储单元可连续,可不连续),因此,每个数据元素不仅要表示存储本身的信息外,还要存储一个指示后继元素信息,前一个叫数值域,后一个叫指针域,这两部分组成一个节点。又链表每个节点只包含一个指针域,故称为线性链表或单链表。单链表图:(有一个默认的头结点,可以不存放任何数据)定义:一个存储元素,一个指向后一个的指针1.插入(在第i个位置插入元素e)先...原创 2019-03-29 09:39:54 · 198 阅读 · 0 评论 -
三元组存放的稀疏矩阵的转置
稀疏矩阵: 非零元素很少,但是分布没有规律的矩阵。(即可以用三元组来存放每个非零元)。三元组顺序表的定义:#define size 3typedef int Elemtype;typedef struct{ int i,j;//非零元的行,列 Elemtype e;//非零元元素 }Triple;//三元组 typedef struct{ Triple date[size+1]...原创 2019-04-02 17:30:05 · 1843 阅读 · 0 评论 -
从文本文件读取一组词组,并保存在向量中
题目描述:对下面一段文本:太和殿/ng 俗称/v 金銮殿/n ,/wd 为/v 汉族/nz 宫殿/n 建筑/n 之/uzhi 精华/n ,/wd 东方/s 三/m 大殿/n 之一/rz 。/wj 中国/ns 现存/v 最/d 大/a 的/ude1 木结构/n 大殿/n 。/wj 位于/v 北京/ns 紫禁城/n (/wkz 故宫/ns )/wky 南/f提取其中的词和对应的词性存到可变数组(...原创 2019-04-09 14:54:44 · 299 阅读 · 0 评论 -
查找单链表倒数第k个元素
题目要求:简单来说就是用高效的算法来求倒数第k个元素。方法1: 就先遍历一遍求出单链表的长度,用单链表的长度减去k,即为从前往后要走走的步数。走了n+n-k次。int length(Linklist &list){ num=0; LNode *p; p=list->link; if(p==NULL) num=0; while(p){ num++; p=p...原创 2019-04-22 17:24:05 · 7714 阅读 · 2 评论 -
二叉树的基本操作
#include<iostream>#include<queue> using namespace std;//疑问1:如何进行中序进行创建 typedef struct Node{ char date; Node *lchild,*rchild;}Node,*BTree;void PreCreateBTree(BTree &T);//先序创建vo...原创 2019-05-05 20:29:21 · 147 阅读 · 0 评论 -
校园导游咨询--单源点最短路径的求解
数据结构课设—校园导游咨询一.需求分析任务分析设计一个校园的导游图,为来访的客人进行景点信息的查询服务。包括对所有景点基本信息的查询,从一个景点到其他任意景点的最短路径的查询,还可以对景点按照评分进行排序输出。功能分析1.用图的数据结构对校园导游图的构建。2.用顺序查找对景点进行按照景点名进行信息查询。3.用折半查找对景点按照景点编号进行信息查询。4.用快速排序的方法对景点...原创 2019-07-05 14:38:48 · 978 阅读 · 0 评论