![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
以不同编程语言实现数据结构解决问题
广大菜鸟
没甚么厉害的经历,联系方式:qq:1456084073,或csdn私信
展开
-
败者树代码和思路
败者树原创 2022-09-18 13:32:17 · 544 阅读 · 1 评论 -
归并排序和直接插入排序结合的排序算法
归并排序和直接插入排序结合的排序算法原创 2022-09-04 21:08:40 · 680 阅读 · 0 评论 -
带头结点和不带头结点的链表代码模板
对目录对之前博客的完善,之前是根据课本看着打的Common.h不带头结点的版本带头结点的版本之前博客的完善,之前是根据课本看着打的Common.h#ifndef COMMON_H#define COMMON_H#include<stdio.h>#include<stdlib.h>#define bool int#define true 1#define false 0#endif不带头结点的版本#include "E:\C\C原创 2021-10-06 13:33:47 · 497 阅读 · 0 评论 -
完全背包问题的解决
暴力算法二维数组动态规划一维数组动态规划原创 2020-11-10 21:03:05 · 597 阅读 · 0 评论 -
01背包问题的解决
二维数组动态规划回溯法一维数组动态规划原创 2020-11-10 17:32:36 · 592 阅读 · 0 评论 -
背包问题算法模板(待完善其他背包)
01背包完全背包 多重背包原创 2020-11-10 15:27:52 · 180 阅读 · 0 评论 -
算法学习(5) 数据结构:用数组实现单链表/栈/队列/单调栈/单栈队列/KMP/kmp统计字串
1、数组模拟单链表例题:826. 单链表https://www.acwing.com/problem/content/828/输入样例:10H 9I 1 1D 1D 0H 6I 3 6I 4 5I 4 5I 3 4D 6输出样例:6 4 6 5#include<iostream>using namespace std;const int N = 100010;// head 头结点下标,e[i]表示结点i的值// ne[i]表示下一个结点的下标,原创 2020-10-14 13:23:02 · 282 阅读 · 0 评论 -
算法学习(四)双指针算法/位运算/离散化/区间合并
1、双指针算法案例:#include<iostream>using namespace std;int main() { char str[1000]; gets_s(str); int n = strlen(str); for (int i = 0; i < n; i++) { int j = i; while (j < n && str[j] != ' ') j++; for (int k = i; k < j; k++)原创 2020-10-09 20:01:17 · 353 阅读 · 0 评论 -
算法学习(二)C++大数计算加减乘除(齐全)
vector<int>add(vector<int>& A, vector<int>& B);vector<int>sub(vector<int>& A, vector<int>& B);vector<int>multi(vector<int>& A, int B);void karatsubaTest(vector<int>& A, vector<int>& B);vector<int>div(vector<int> A, vector<int> B);原创 2020-10-05 17:18:53 · 799 阅读 · 0 评论 -
算法学习(三)前缀和差分
前缀和:Sn 类似于积分差分:dn 类似于微分原创 2020-10-06 01:10:11 · 396 阅读 · 1 评论 -
算法学习(1)快速排序/归并排序/二分
排序:快排、归并排序二分:整数、浮点数快速排序测试:https://www.acwing.com/problem/content/787/原创 2020-10-02 21:20:43 · 316 阅读 · 0 评论 -
C++数据结构学习:实现电梯动画
这个是一年前帮同学做的课设,但是放了一年才来放,可能有些效果没有很好实现。效果:有电梯人数限制,等待的人随机概率决定是否继续等待通过ctrl+c结束否则一直运行1、Client.h#pragma once#ifndef CLIENT_H_#define CLIENT_H_#define MAX_LINEUP_SIZE 5#define MAX_LIFT_SIZE 10 #include<iostream>#include<time.h>using names原创 2020-09-29 16:44:20 · 679 阅读 · 0 评论 -
C++和C#实现的退火模拟解决旅行商问题
C++实现// 理论学习参考:https://blog.csdn.net/qq_33268231/article/details/78210150//C++代码来自:https://blog.csdn.net/zhuzilong2013/article/details/82821348#include <stdio.h>#include <stdlib.h>#in...原创 2020-03-29 17:20:59 · 361 阅读 · 0 评论 -
动态规划--最长公共子序列2种方式---适用于2个字符串不是特别长的情况
视频详细讲解:https://haokan.baidu.com/v?vid=6988543451739898156&pd=bjh&fr=bjhauthor&type=video1、迭代解法:#include<string.h>#include<iostream>using namespace std;int dp[2005][2005];...原创 2020-03-21 18:29:18 · 186 阅读 · 0 评论 -
红黑树数据结构的C++实现模板(2)---结合抽象类
//"BTREE.h"#pragma once#ifndef RTREE#define RTREE#define RED 0#define BLACK 1#include<ctime>#include<iostream>/*.* 定义红黑树的结点类*/template<class Type>class RBTreeNode {publi...原创 2020-02-19 20:30:05 · 153 阅读 · 0 评论 -
红黑树数据结构的实现模板
可以参考的学习资料:30张图带你彻底理解红黑树–这个可以讲解思想来源红黑树(一)之 原理和算法详细介绍–总结了算法的规则 【数据结构】带你轻松学习红黑树,菜鸟学习红黑树经验分享! #include"pch.h"#include<iostream>#inclu...原创 2020-02-19 15:24:46 · 161 阅读 · 0 评论 -
最小生成树问题:若要在n个城市之间建设通讯网络,只需要架设n-1条线路即可(隔壁学校同学的课设)
题目8 最小生成树问题(难度系数:1.1)[问题描述]若要在n个城市之间建设通讯网络,只需要架设n-1条线路即可。如何以最低的经济代价建设这个通讯网,是一个网的最小生成树问题。[基本要求](1)利用克鲁斯卡尔算法求网的最小生成树。(2)实现并查集。以此表示构造生成树过程中的连通分量。(3)以文本形式输出生成树中各条边以及他们的权值。[测试数据]参见本题集中的习题。[实现提示]...原创 2020-02-21 10:30:48 · 14283 阅读 · 0 评论 -
学习广义表的例题
根据表头、表尾的定义可知:任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可以是子表,而其表尾必定是子表。也就是说,广义表的head操作,取出的元素是什么,那么结果就是什么。但是tail操作取出的元素外必须加一个表——“ ()“举一个简单的列子:已知广义表LS=((a,b,c),(d,e,f)),如果需要取出这个e这个元素,那么使用tail和head如何将这个取出来。利用上面说的,...转载 2020-01-07 23:21:58 · 2602 阅读 · 0 评论 -
栈和队的实现8--链队
#include"pch.h"#include<iostream>using namespace std;typedef int QElemType;//数据类型typedef struct QNode { QElemType data; struct QNode *next;}QNode, *QueuePtr; //结点类型typedef struct { Q...原创 2019-12-29 20:11:43 · 129 阅读 · 0 评论 -
编写一个删除子串的函数
#include<iostream>#include<string.h>using namespace std;//删字符规定的几位void deleteStr_several(char*str,int start,int span){ /* 当span>0时,删除start位置开始的后span个字符; 当span<0时,删除start位置前面的s...原创 2019-12-29 17:27:39 · 517 阅读 · 0 评论 -
哈夫曼树基本操作
#include"pch.h"#define _CRT_SECURE_NO_WARNINGS//避免strcpy()不能使用#include <stdio.h>#include<iostream>#include<string.h>#include<iomanip>//需要控制格式// 这个头文件是声明一些 “流操作符”的//比较常用的...原创 2019-12-28 21:24:11 · 669 阅读 · 0 评论 -
中序线索二叉树的实现(略提)
#include"pch.h"#include<iostream>using namespace std;typedef char elem;typedef struct BiThrNode { struct BiThrNode * lchild, *rchild; int LTag, RTag; elem data;}BiThrNode, *BiThrTre...原创 2019-12-28 21:08:26 · 607 阅读 · 0 评论 -
二叉树的C++实现(纯代码)
#include"pch.h"#include<iostream>#include<stdio.h>using namespace std;//利用上次实验实现的栈的结构知识来做本次实验的辅助工具#define MaxSize 200//定义目标数据类型--字符类型typedef char elem;//定义树结点,属性有:数据,左右指针typedef...原创 2019-12-28 20:19:38 · 2725 阅读 · 0 评论 -
栈和队的实现7--双栈(分偶数部分,和号奇数部分)
利用栈底位置相对不变的特性,可以让两个顺序栈共享一个空间。具体实现方法大概有两种:一种是奇偶栈,就是所有下标为奇数的是一个栈,偶数是另一个栈。但是这样一个栈的最大存储就确定了,并没有起到互补空缺的作用,我们实现了也就没有太大意义。还有一种就是,栈底分别设在数组的头和尾。进栈往中间进就可以了。这样,整个数组存满了才会真的栈满。#include"pch.h"#include<iost...原创 2019-12-28 17:44:49 · 1580 阅读 · 0 评论 -
汉诺塔递归算法C++实现
算法介绍其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n – 1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 A B C;若n为奇数,按顺时针方向依次摆放 A C B。⑴按顺时针方...原创 2019-12-28 17:06:17 · 2286 阅读 · 0 评论 -
栈和队列6--链栈
#include"pch.h"#include<iostream>using namespace std;typedef int QElemType;//数据类型typedef struct QNode { QElemType data; struct QNode *next;}QNode, *QueuePtr; //结点类型typedef struct { Q...原创 2019-12-28 17:01:07 · 129 阅读 · 0 评论 -
栈和队列5--不带头指针的循环队列
#include"pch.h"#include<iostream>#define MaxSize 200//循环队列最大长度using namespace std;typedef int elem;//数据类型typedef struct QNode { elem data; struct QNode *next;}*QueuePtr;typedef struc...原创 2019-12-28 16:53:03 · 832 阅读 · 0 评论 -
栈和队列4--循环队列(标志位)
解决假溢出问题,1,少用一个元素,判断满的条件:(Q.rear+1)% MaxSize==Q.front 2.设置标志位(现在来定)#include"pch.h"#include<iostream>#define MaxSize 10//循环队列最大长度using namespace std;typedef int QElemType;//数据类型typedef st...原创 2019-12-28 16:29:49 · 339 阅读 · 0 评论 -
栈和队列3--循环队列(少用1位)
// 从尾入,从头出// 判空条件:front=rear=0,判满条件:(Q.rear+1)% MaxSize==Q.front// 入栈:base[rear++]=e; 出栈:e=base[front++];#include"pch.h"#include<iostream>#define MaxSize 200//循环队列最大长度using namespace std;...原创 2019-12-28 16:15:14 · 947 阅读 · 0 评论 -
栈和队列2--链栈代码
#include"pch.h"#include<iostream>using namespace std;typedef int ElemType;typedef struct StackNode { ElemType data; struct StackNode *next;}StackNode, *LinkStack;//1.初始化bool InitStack...原创 2019-12-28 11:56:00 · 112 阅读 · 0 评论 -
栈基础操作1--顺序栈的实现
//top指针指的是一个空格#include"pch.h"#include<iostream>#define MaxSize 200//顺序栈最大长度using namespace std;typedef int SElemType;//数据类型typedef struct { SElemType *base;//栈底 SElemType *top;//栈顶 in...原创 2019-12-28 11:52:29 · 402 阅读 · 0 评论 -
双向链表代码实现
#include<iostream>using namespace std;typedef int ElementType;//定义类型typedef struct DuLNode { ElementType data; struct DuLNode * prior;//前继 struct DuLNode * next;//后继}DuLNode,* DuLinkLi...原创 2019-12-26 21:43:00 · 245 阅读 · 0 评论 -
数据结构基础复习——带头结点的单链表的实现
#include"pch.h"#include<iostream>using namespace std;typedef int ElementType;//定义类型typedef struct LNode{ //结点类型 ElementType data; //结点的数据域 struct LNode * next;//指针域}LNode,*LinkList; ...原创 2019-12-26 21:14:34 · 462 阅读 · 0 评论 -
数据结构基础复习-顺序表的实现
// ConsoleApplication5.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//线性表的顺序表示和实现#include "pch.h"#include<iostream># define maxsize 100//顺序表最大长度using namespace std;typedef int ElementType;//数据类型t...原创 2019-12-26 20:46:01 · 294 阅读 · 0 评论 -
拓扑排序
例如,假定一个计算机专业的学生必须完成图3-4所列出的全部课程。在这里,课程代表活动,学习一门课程就表示进行一项活动,学习每门课程的先决条件是学完它的全部先修课程。如学习《数据结构》课程就必须安排在学完它的两门先修课程《离散数学》和《算法语言》之后。学习《高等数学》课程则可以随时安排,因为它是基础课程,没有先修课。若用AOV网来表示这种课程安排的先后关系,则如图3-5所示。图中的每个顶点代表一门课...原创 2019-12-26 16:49:47 · 230 阅读 · 0 评论 -
最短路径_Floyd算法(多源)
Floyd算法是一个经典的动态规划算法,它又被称为插点法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。Floyd算法是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,算法目标是寻找从点i到点j的最短路径。从任意节点i到任意节点j的最短路径不外乎2种可能,1是直接从i到j,2是从i经过若干个节点k到j。所以,算法假设Dis(i,...原创 2019-12-26 14:50:03 · 462 阅读 · 0 评论 -
最短路径_Dijstra算法(单源)
定义所谓最短路径问题是指:如果从图中某一顶点(源点)到达另一顶点(终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边的权值总和(称为路径长度)达到最小。Dijkstra(迪杰斯特拉)算法他的算法思想是按路径长度递增的次序一步一步并入来求取,是贪心算法的一个应用,用来解决单源点到其余顶点的最短路径问题。//利用狄克斯特拉(Dijkstra)算法求上图中0结点到其它结点的最短路径,单...原创 2019-12-26 14:37:47 · 293 阅读 · 0 评论 -
图的应用1.最小生成树——kruskal算法实现(加边法)
#include"pch.h"#include<iostream>using namespace std;//用邻接矩阵来存储#define MaxNum 10//最大顶点数#define MaxInt 32767//无穷大#define MinInt -1//认为较小typedef char VerType;//数据类型typedef int ArcType;//权...原创 2019-12-26 14:16:14 · 737 阅读 · 0 评论 -
图的应用1.最小生成树——prim算法实现(加点法)
最小生成树概念:将给出的所有点连接起来(即从一个点可到任意一个点),且连接路径之和最小的图叫最小生成树。数据结构:树形结构,或者说是直链型结构,因为当n个点相连,且路径和最短,那么将它们相连的路一定是n-1条实现思路:将点分为在树中的点与不在树中的点,每次取出树中点的连接的最小路径,且该路径连接的点不在树中,然后将该路径连接的点加入树中,重复并进行路关于图的几个概念定义:连通图:在无向图中...原创 2019-12-26 13:47:35 · 737 阅读 · 0 评论 -
图邻接表创建无向图存储遍历
//1图的邻接矩阵表示法和邻接表创建无向图存储#include"pch.h"#include<iostream>using namespace std;#define MaxNum 100 //最大顶点数//1.1图的邻接矩阵表示法创建无向图存储#define MaxInt 32767 //无穷typedef char VerType;//数据类型typedef ...原创 2019-12-26 13:31:40 · 628 阅读 · 0 评论