
数据结构与算法
关于数据结构与算法的一些代码和感悟
苞米地里捉小鸡
程序蒟蒻
展开
-
大话数据结构(十四) 排序
1.排序该章节一共讲解七种排序算法:1.冒泡排序2.简单选择排序3.直接插入排序4.希尔排序5.堆排序6.归并排序7.快速排序2.冒泡排序1.最简单排序代码/*最简单排序实现函数*/using namespace std;#define MAXSIZE 10typedef struct{ int r[MAXSIZE + 1]; int length;}SqLis...原创 2020-02-10 09:29:22 · 113 阅读 · 0 评论 -
大话数据结构(十三) 图的最短路径、拓扑排序和关键路径
图的最短路径就是两端点之间经过的边上权值最小的路径1.Dijkstra算法void ShortestPath_Dijkstra(Graph G, int v0, Patharc *P, ShortPathTable *D){ int v, w, k, min; int final1[MAXVEX]; //表示v-v0的最短路径是否成功存储 for (v = 0; v < G.nu...原创 2020-02-07 15:09:24 · 428 阅读 · 0 评论 -
大话数据结构(十二) 最小生成树的两种算法
1.Prim算法该算法的核心思想就是在图中所有的边权值列出来TE,再找一端固定(自己设定)U={u…}的点集合,另一端v不在点集合中的权值最小的边,然后将该边并入集合TE中,并且将v并入U集合中,重复该步骤直到所有的点都在U中,就完成一个最小生成树的构建。void MiniSpanTree_Prim(MGraph G){ int min, i, j, k; int adjvex[MAXV...原创 2020-02-06 23:05:57 · 188 阅读 · 0 评论 -
大话数据结构(十一)图Graph的遍历
1.深度优先遍历又称为深度优先搜索,简称为DFS。原创 2020-02-06 16:30:23 · 159 阅读 · 0 评论 -
大话数据结构(十)图Graph的相关程序实现
1.图的定义首先声明一下相关的函数声明`class Graph{public: CreateGraph(*G, V, VR); //按照顶点集合V和边VR的定义构造图G DestrotyGraph(*G); //删除一个图 LocateVex(G, u); //若图G中存在顶点u,则返回图中的位置 GetVex(G, v); //返回图G中顶点v的值 PutVex(G, v, v...原创 2020-02-05 01:12:59 · 953 阅读 · 0 评论 -
大话数据结构(九)树
1.树的定义树(Tree)是n(n≥0)个结点的有限集。n=0时称为空树。在任意一颗非空树中;(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相关的有限集T1、T2、。。。Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree).2.双亲表示法#define MAX_TREE_SIZE 100typedef ...原创 2020-02-02 16:44:04 · 114 阅读 · 0 评论 -
大话数据结构(八) 串
1.串的含义串(string)是由零个或多个字符组成的有限序列,又名叫字符串。2.生成一个其值等于字符串常量chars的串Tstatic string StrAssign(string T_l , const char *chars); string String::StrAssign(string T_l, const char *chars){ T_l = chars; re...原创 2020-02-01 01:49:56 · 201 阅读 · 0 评论 -
大话数据结构(七)栈和队列——队列的相关知识
1.队列是什么?队列queue是只允许在一段进行插入操作、而在另一端进行删除操作的线性表。队列是一种先进先出的线性表,允许插入的一端称为队尾,允许删除的一段称为队头。引入两个指针,front指针指向队头元素,rear指针指向队尾元素的下一个位置。2.循环队列结构循环队列的代码简单,但是简单的代价就是我们需要事先知道数组的长度。代码如下:(1).首先定义一个循环队列#define MA...原创 2020-01-28 14:55:50 · 299 阅读 · 0 评论 -
大话数据结构(六)栈和队列——栈的相关知识
1.栈和队列的区别栈是一种LIFO结构,即后进先出,它是一种线性表,而我们知道线性表是由数组组成的栈(stack)是限定仅在表尾进行插入和删除操作的线性表。2.创建一个普通栈这种结构的定义、初试化、入栈操作、出栈操作可以由以下代码表示:// 4.1stack.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>...原创 2020-01-28 01:01:00 · 122 阅读 · 0 评论 -
大话数据结构(五)线性表相关概念——(静态链表、循环链表、双向链表)
前面一部分我们总结了线性表链式存储结构的单链表结构,主要要掌握单链表的查找、插入和删除操作。在之前的总结中我们发现,在单链表的插入操作中,我们需要动态地申请一个长度为size字节的连续空间,具体的操作是利用一个malloc函数,而在删除操作中,我们调用了一个free()函数来释放内存空间。那么有没有办法不用这种形式来创建单链表呢,我们前辈就想出了用数组来代替指针来描述单链表。我们之前复习顺序存...原创 2019-09-24 20:48:18 · 195 阅读 · 0 评论 -
大话数据结构(四)线性表相关概念——(链式存储结构之单链表的读取、插入、删除以及整表创建、整表删除)
之前我们说过,顺序存储结构的缺点就是插入和删除操作需要移动的数据元素非常的多,显然需要消耗掉大量的时间,有没有什么办法可以解决这种问题呢?我们的前辈算法师就很好地解决了这个问题——链式存储结构。目录链式存储结构单链表的定义单链表的读取、插入和删除单链表的读取单链表的插入单链表的删除单链表的整表创建单链表的整表删除链式存储结构我们可以脑补一下链子的形状,我...原创 2019-09-24 17:44:48 · 451 阅读 · 1 评论 -
大话数据结构(三)线性表相关概念——(顺序线性表插入和删除等)
话不多说,我们这一部分的主要重点是线性表的相关概念的总结和回顾。线性表主要有两种存储结构,一是顺序存储结构,二是链式存储结构。当然这两种结构各有各的优点。接下来我们就慢慢开始回顾。首先我们开始顺序存储结构的介绍。线性表的顺序存储结构顺序存储结构,指的是用一段连续的地址的存储单元一次存储数据元素。直白点说就是在一个班级里边,每个学生都有自己的学号,这个学号一般是从****0001开始,按...原创 2019-09-23 18:42:01 · 401 阅读 · 0 评论 -
大话数据结构(二)算法时间复杂度、算法效率的度量方法、算法设计的要求、算法的特性、算法的定义等
目录 算法的定义算法的特性输入输出有穷性确定性可行性算法设计的要求算法效率的度量方法事后统计方法事前统计方法算法时间复杂度时间复杂度O(1)——常数阶线性阶对数阶平方阶总结下面我们开始第二部分的复习和总结这一部分主要内容是关于算法的相关概念的讲解,对于从小就接触数学的我们来说算法一定不陌生,只...原创 2019-09-22 18:01:15 · 784 阅读 · 2 评论 -
大话数据结构(一)数据结构相关概念
目录数据结构的基本概念和术语1.数据2.数据元素3.数据项4.数据对象逻辑结构和物理结构抽象数据类型总结在这里说一下,大学的时候学习过数据结构,但是根本不深入,现在重新学习一遍数据结构和算法知识,主要是为了明年的秋招做准备,因此将最近学习过的知识在博客上重写一遍,加深记忆,也是锻炼自己的思维能力,提升代码量。因为大话数据结构这本书是基于C语言来描述的,因此...原创 2019-09-21 16:48:27 · 2370 阅读 · 0 评论