DataStructure
#
YDDUONG
这个作者很懒,什么都没留下…
展开
-
C\C++回顾,数据结构之线性结构
线性结构主要有:线性表、堆栈、队列,每种线性结构都可以用数组或者链表实现,同时数组实现时,常考率使用动态数据(动态数据申请使用cstdlib头文件下的malloc函数)线性表(List):由同类型数据元素构成有序序列的线性结构相关概念有:长度,空表,表头(起始位置),表尾(结束位置)1 、List MakeEmpty(): : 初始化一个空线性表L ;2 、ElementType Fi...原创 2020-03-20 16:49:14 · 887 阅读 · 0 评论 -
C\C++:PIPIOJ-最大连续子序列(并找到序列的位置)
题目链接:http://pipioj.online/problem.php?id=1008题目描述给定 K 个整数的序列{ N1, N2, …, NK } ,其任意连续子序列可表示为{ Ni, Ni+1,…,Nj} ,其中1 <= i<= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 } ,...原创 2020-03-03 16:22:41 · 690 阅读 · 0 评论 -
C\C++知识回顾,浮点比较、数组、指针、结构体以及多点测试输入没有给定结束条件
浮点数的比较,可能是个坑,因为存在误差的存在,可以下列方式解决const double Pi = acos(-1.0) // 顺带提一下圆周率pi的定义const double eps = 1e-8;#define Equ(a, b) (fabs((a) - (b)) < (eps)) // ab相等返回true#define More(a, b) (((a) - (b)) >...原创 2020-03-03 12:57:36 · 278 阅读 · 0 评论 -
C\C++ 知识回顾,memset及字符字符串相关操作,破译密码
回顾知识点:memset(a, -1, sizeof(a)); 头文件为#include<cstring> memset 一般只用来赋值0或者-1c = getchar(); 输入一个字符scanf("%s", str); 输入一个字符串,遇到空格或换行符结束gets(str); 输入一个字符串,遇到换行符结束int len = strlen(str); 返回字符串的长度,...原创 2020-03-01 23:05:23 · 437 阅读 · 0 评论 -
C/C++:图的遍历dfs与bfs
最近在学习图论,下面是一些关于图的遍历相关内容,主要是dfs与bfs,顾名思义是深度优先搜索和广度优先搜索不管是dfs还是bfs,都是遍历图中所有的结点,通过一个bool数组记录该节点是否被访问dfs可以使用递归和非递归的方式实现,本文通过递归的方式实现(对于非递归,多重循环就是dfs最好的体现),给一个初始的访问结点,开始找与它相关的结点,找到一个就自己调用自己(递归),直到找到底,再返回...原创 2019-04-30 00:22:48 · 1548 阅读 · 1 评论 -
C/C++:邻接表实现图的存储(有权值和无权值)
邻接表存储图可以使用vector容器来实现,方便且简单,如果是有权图,用结构体将信息串起来无权值存储:#include <cstdio>#include <vector>using namespace std;#define MAX 100vector<int> Adj[MAX];//MAX为顶点个数,没有边权 void PrintAdj(in...原创 2019-04-29 16:40:06 · 2590 阅读 · 0 评论 -
C/C++:邻接矩阵实现图的存储
邻接矩阵可以无权值的01矩阵,也可以是有权值得,有向图和无向图,可根据下面不同的初始化函数对矩阵进行初始化#include <cstdio>#define MAX 1000#define SIZE 10 void InitDireG(int x, int y, int d);//Vx到Vy,权重为dvoid InitDireG(int x, int d);//Vx到Vx,权...原创 2019-04-29 13:02:38 · 1094 阅读 · 0 评论 -
C/C++:链表实现堆栈定义和基本操作
用单链表实现堆栈,不用考虑堆栈空间太小,相对顺序表实现简单。由于单链表的头指针的位置不变,所以头节点指向的第一个节点,就是栈顶元素;出栈的时候也是将头结点指向的节点数据返回,然后释放该节点的内存。 关于链表的操作可参考我写的这篇博客:https://blog.csdn.net/y_dd6011/article/details/86483375#include...原创 2019-01-16 09:45:13 · 3560 阅读 · 0 评论 -
C/C++:顺序表实现堆栈定义和基本操作
堆栈是数据结构中常用的一种存储数据方式,可用于表达式求值,深度优先搜索,回溯算法等,以下代码为用顺序表实现堆栈。代码一:用一个数组实现一个堆栈#include <cstdio>#include <cstring>#define MaxN 100typedef struct LNode* Stack;typedef char ElementType;str...原创 2019-01-15 21:18:23 · 893 阅读 · 0 评论 -
C/C++:链表实现队列的定义和基本操作
链表实现队列,表头和表尾都可以实现入队和出队,链表不用考虑对列的最大容量,只需要考虑链表是否为空,下面分别给出两种实现代码。 链表头入队,链表尾出队:#include <cstdio>#include <cstring>typedef struct LNode* Queue;typedef char QueueData;struct LNo...原创 2019-01-20 12:22:51 · 856 阅读 · 1 评论 -
C/C++:线性表之链表
链表一般有两种,带头结点和不带头结点,下列代码展示的是带头结点的例子,链表的声明、插入、删除、查找: #include<stdio.h>#include<malloc.h>typedef int typeData;typedef struct LNode* List;struct LNode { //链表节点 typeData data; List n...原创 2019-01-14 20:30:32 · 615 阅读 · 0 评论 -
C/C++:线性表之顺序表
顺序表主要使用数组来存储数据,保存多项式的系数,下标对应指数,以结构体的形式来操纵数据#include<stdio.h>#include<malloc.h>#define TypeData int //结构数组存储的数据类型#define MAXN 10 //最大存储的数据量 typedef struct lineNode* list; //给指针类型结构数...原创 2019-01-14 09:52:25 · 259 阅读 · 0 评论 -
C/C++:记录函数的运行时间,粗略估算时间复杂度
/*测试函数运行时间*/ #include<stdio.h>#include<time.h> //利用clock()函数进行计时,他是记录从mian函数开始的时钟打点数 #define MAXK 1e7 //被测试函数被调用的次数 clock_t start, stop; //clock_t是clock()函数返回的变量类型 double duration; ...原创 2019-01-13 10:25:15 · 2082 阅读 · 0 评论 -
C/C++ : 12-24小时制转换
在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。 /* Name: 12-24小时制转换 Author: YDDUONG Description: (英文习惯) 上午:0:0 am~11:59am 下午:12:0 pm~11:59pm*/ #in...原创 2018-11-20 23:22:02 · 10732 阅读 · 1 评论 -
C/C++:顺序表实现队列的定义和基本操作
队列是一种先进先出的数据结构 ,很多场景下都有应用,以下为源代码:#include <stdio.h>#include <malloc.h>typedef struct LNode* Queue;typedef char QueueData;struct LNode { //队列结构体,数据从队列头进入,从队列尾出去 QueueData *data;...原创 2019-01-17 16:33:06 · 784 阅读 · 0 评论