数据结构
常用数据结构的代码实现
索儿呀
这个博主知识面超级广哦,每一篇原创都精雕细琢
展开
-
Python 关于下标的运用技巧(二分查找法,冒泡、选择、插入、归并、快速排序算法)
简单分析查找、排序算法中关于下标的运用(Python语言)原创 2019-11-12 11:21:26 · 2088 阅读 · 0 评论 -
输入n个整数并排序输出;调用冒泡排序法进行排序的函数(C)
1. 使用了:选择排序法,冒泡排序法2. 排序法中对于两个数据的交换用了指针,用了引用原创 2019-04-02 13:10:22 · 14536 阅读 · 0 评论 -
用栈将字符串倒序输出(C++)
1. 用结构体将栈定义出来(写出基本的操作:入栈,出栈,判断栈空和栈满)2. 用数组接收输入的字符串,然后将字符串入栈,再出栈,就是倒序输出了原创 2019-04-02 13:21:50 · 5997 阅读 · 0 评论 -
利用栈的基本操作,将一个十进制数转换成8进制数
题目利用栈的基本操作,将一个十进制数转换成8进制数#include<iostream>using namespace std;#define MAXSIZE 100typedef int ElemType; typedef struct{ //顺序栈的数据类型 ElemType *base; ElemType *top; int stacksize; ...原创 2018-12-16 00:18:54 · 9460 阅读 · 0 评论 -
建立栈并进行元素(8,9,5,4)入栈,实现顺序栈的建立及入栈的基本操作;实现元素(9,5)的出栈,实现栈的出栈的操作
题目:建立栈并进行元素(8,9,5,4)入栈,实现顺序栈的建立及入栈的基本操作; 实现元素(9,5)的出栈,实现栈的出栈的操作#include<iostream>using namespace std;#define MAXSIZE 100typedef int ElemType; typedef struct{ //顺序栈的数据类型 ElemTyp...原创 2018-12-15 21:04:48 · 1474 阅读 · 2 评论 -
假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag == 0和tag == 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试设计与此
假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag = 0 和 tag = 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试设计与此结构相应的插入和删除算法,编写代码,并带入数据运行验证通过原创 2018-12-16 00:18:42 · 19843 阅读 · 0 评论 -
输出该单链表的表长
题目输出该单链表的表长#include<iostream>using namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node;int Init(Node *&L){//初始化链表 L = new Node; L-&...原创 2018-12-15 20:22:15 · 1692 阅读 · 0 评论 -
在一个包括头结点和5个结点的(5,4,3,2,1)的单链表的指定位置(如i=2)删除一个结点,实现单链表删除的基本操作。将该单链表的所有元素显示出来
题目在一个包括头结点和5个结点的(5,4,3,2,1)的单链表的指定位置(如i=2)删除一个结点,实现单链表删除的基本操作。将该单链表的所有元素显示出来#include<iostream>using namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *...原创 2018-12-15 20:16:38 · 1917 阅读 · 1 评论 -
在已建好的单链表中的指定位置(i=3)插入一个结点3,实现单链表插入的基本操作。将该单链表的所有元素显示出来
题目在已建好的单链表中的指定位置(i=3)插入一个结点3,实现单链表插入的基本操作。将该单链表的所有元素显示出来#include<iostream>using namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node;int In...原创 2018-12-15 20:10:34 · 1902 阅读 · 0 评论 -
利用队列的基本操作,完成舞伴问题
题目利用队列的基本操作,完成舞伴问题舞伴问题的描述:假设在周末舞会上,男士们和女士们进入舞厅时各自排成一队,跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴,若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求设计一个函数模拟上述舞伴配对问题,试设计程序实现之参考资料:《数据结构 C语言版 第2版》严蔚敏 李冬梅 吴伟民...原创 2018-12-16 00:19:13 · 3462 阅读 · 4 评论 -
数据结构考试的一些选择题
文章目录数据结构绪论:线性表顺序表(随即存取结构)链表(顺序存取结构)栈和队列树和二叉树树的遍历二叉树哈夫曼树图图的遍历最小生成树拓扑排序数据结构绪论:数据项:数据的最小单位数据元素:数据的基本单位数据结构是带有结构的各数据元素的集合一些表面上很不相同的数据可以有相同的逻辑结构线性表将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是n(当第一个有序表所有的元素都小于...原创 2019-01-03 01:26:17 · 3767 阅读 · 0 评论 -
最小生成树(Prim算法,Kruskal算法 c++)
在一个连通图的所有生成树中,各边的代价和最小的那棵生成树称为该连通图的最小代价生成树,即最小生成树有普利姆(Prim)算法和克鲁斯卡尔(Kruskal)算法Prim算法更适合求稠密图的最小生成树【稠密图的无向网更适合使用邻接矩阵形式存储】Kruskal算法更适合求稀疏图的最小生成树【稀疏图的无向网更适合使用邻接表形式存储】输入:8 14a b c d e f g ha b 4 ...原创 2019-02-19 10:24:29 · 4863 阅读 · 0 评论 -
最长公共子序列(C语言)
问题: 设X有m个元素,Y有n个元素,求得X和Y的最长公共子序列。注意:这问题如果用蛮力算法,时间复杂度是指数级别的,不太好。考虑一下子问题之间的依赖关系(设Z是X和Y的最长公共子序列,有k个元素):若X最后一个元素==Y最后一个元素,则Z(k-1)是X(m-1)和Y(n-1)的最长公共子序列。若X最后一个元素!=Y最后一个元素,则Z可以是X(m-1)和Y的最长公共子序列。若X最后一个...原创 2018-11-03 11:57:11 · 9567 阅读 · 1 评论 -
矩阵连乘积:最优乘法次数(C语言)
题目: 确定n个矩阵连乘积 A1A2A3…An 的计算次序,使得按照这一次序计算矩阵连乘积,需要的"数乘"次数最小。这个问题满足动态规划的条件矩阵乘法满足结合律两个矩阵相乘,要满足左边矩阵的列数 = 右边矩阵的行数两个矩阵相乘,计算量为:左边矩阵的行数 乘以 左边矩阵的列数(即:右边矩阵的行数)乘以 右边矩阵的列数问题实际上不是执行乘法,而只是决定所涉及的矩阵乘法的顺序思路:将...原创 2018-10-26 20:00:51 · 5346 阅读 · 2 评论 -
数塔问题(C语言)
题目:如下图出示了一个数字三角形,请编写一个程序计算从顶自底的某一条路径,使该路径经过的数字总和最大。每一步可沿左斜线向下或右斜线向下三角形行数(1~100)三角形中数字为整型#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;using namespace std;int main(){ int n; //行数 int a[100][100]; do{ cout&原创 2018-10-21 10:56:08 · 10896 阅读 · 3 评论 -
填写运算符(C语言,枚举法)
题目:输入五个数,数与数之间用空格分开,然后给出结果,然后在5个数间只能添加“+”,“-”,“*”,“/”这4种运算符,使得等式成立。例如:输入五个运算数:5 5 5 5 5输入结果:5输出。。。。。。注意:‘*’ ,‘/’ 比 ‘+’,‘-’ 的优先级高除数不能为0#include&amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt;using namespace std;int mai...原创 2018-11-13 23:58:17 · 1328 阅读 · 0 评论 -
大数相乘(C语言,分治算法)
问题:由于编程语言提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,因此需要利用其他方法实现高精度数值的计算,于是产生了大数运算。大数运算主要有加、减、乘三种方法。下面就是用分治算法解决“大数相乘”问题。参考资料:《算法学习与应用 从入门到精通》张玲玲【算法】大数乘法问题及其高效算法百度百科 大数运算百度百科 karatsuba乘法...原创 2018-11-18 01:42:45 · 6711 阅读 · 4 评论 -
银行存款(C语言,递推法)
题目:母亲为儿子sun 4年的大学生活准备了一笔存款,方式是整取零存,规定sun 每个月月底取下一个月的生活费。假设银行年利息为1.71%,计算该母亲每个月至少要存入多少钱?算法分析:可采用逆推法分析存钱和取钱的过程,因为按照月为周期取钱,所以4年可以分为48个月,并对每个月进行计算。递推法顺推法:从已知条件出发,逐步推算出要解决问题的方法(例如斐波拉契数列)逆推法:从已知的结果出发...原创 2018-11-14 20:53:09 · 4243 阅读 · 0 评论 -
建立一个包括头结点和4个结点的(5,4,2,1)的单链表,实现单链表建立的基本操作,并且将该单链表的所有元素显示出来
题目建立一个包括头结点和4个结点的(5,4,2,1)的单链表,实现单链表建立的基本操作,并且将该单链表的所有元素显示出来#include<iostream>using namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node;in...原创 2018-12-15 20:00:56 · 3904 阅读 · 0 评论 -
在顺序表中删除指定位置(i=5)上的元素,实现顺序表的删除的基本操作,输出顺序表中所有元素
题目在顺序表中删除指定位置(i=5)上的元素,实现顺序表的删除的基本操作,输出顺序表中所有元素#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。type...原创 2018-12-15 19:51:34 · 8451 阅读 · 5 评论 -
在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素
题目在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。typedef ...原创 2018-12-15 19:41:13 · 6904 阅读 · 0 评论 -
图书信息管理系统(C语言)
题目信息:每种图书包括下列三部分信息:书号,书名,价格查找:根据指定的书号查找相关图书的信息,并返回该图书在表中的位置插入删除修改:根据指定的书号,修改图书价格排序:将表中图书按照价格由低到高排序计数:计算表中图书数量#include&lt;iostream&gt;#include&lt;string.h&gt;using namespace std;typedef s...原创 2018-10-18 09:32:58 · 7889 阅读 · 3 评论 -
对顺序表的一些操作,建立栈,出栈,入栈,输出顶点元素
题目:建立一个顺序栈,1,2,3入栈。输出栈顶元素。4,5入栈将栈中所有元素出栈,并输出#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;using namespace std;#define MAXSIZE 100typedef int ElemType; typedef s原创 2018-10-18 09:34:53 · 2259 阅读 · 0 评论 -
判断回文(C语言,用栈来解决)
#include#include&amp;amp;lt;stdlib.h&amp;amp;gt;#include&amp;amp;lt;string.h&amp;amp;gt;using namespace std;#define MAXSIZE 100typedef char ElemType;typedef struct{ //顺序栈的数据类型ElemType *base;ElemType *top;int sta原创 2018-10-21 20:14:19 · 6304 阅读 · 3 评论 -
队列的简单实现(C语言)
题目:1、建立循环队列,并实现元素(4,5,7,6,8)入队,实现循环队列的建立,和入队的基本操作;2、实现元素(4,5,7,6,8)依次出队并输出。#include&lt;iostream&gt;using namespace std;#define MaxSize 100typedef struct{ int *base; int front; int rear;}Seq;...原创 2018-11-01 09:04:48 · 1066 阅读 · 0 评论 -
表达式求值(C语言)
代码可以实现的功能:可以计算任意整型但是只可以进行 + - * / () 运算我写的代码,因为我想代码可以实现:表达式可以计算任意整型数,所以定义了两个栈,分别用来存放操作符和操作数;批注:如果只定义一个栈,我觉得我只能做到,我的代码只能计算0到9的表达式因为定义了两个栈(存放不同类型的值,一个存放字符,一个存放数值),所以初始化,入栈,出栈,取栈顶元素的函数都要写两遍然后核心就...原创 2018-11-01 14:47:49 · 14466 阅读 · 7 评论 -
二叉树的一些简单操作(C语言)
题目:以二叉链表作为二叉树的存储结构,创建一颗二叉树,并依次用先序、中序、后序遍历此二叉树以上图中的二叉树为例输入:DAB##C#EG##H##FI#J###输出:先序:DABCEGHFIJ中序:BACGEHDIJF后序:BGHECAJIFD提高题:1、 参考算法5.6,统计二叉树中结点的个数。2、 统计二叉树中叶子结点的个数。#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt...原创 2018-11-15 09:56:34 · 305 阅读 · 0 评论 -
对链表的一些操作,链表逆置和实现约瑟夫环(C语言)
题目:建一个单链表,在此基础上实现:一、 编程求链表最大的K个值;二、 删除链表中值大于mink ,小于maxk的结点;三、 将链表逆置四、 将链表修改为循环链表,实现约瑟夫环思路:一,二很简单,先把链表排序就差不多可以解决了三:把链表逆置,先设置两个指针,一个指针保存下一个,另外一个指针保存当前;然后将当前指针取出来,头指针指向它;最后就是不断往下取进行头插四:约瑟夫环,...原创 2018-11-29 18:39:01 · 1323 阅读 · 0 评论 -
输出二叉树中从每个叶子结点到根结点的路径,统计二叉树的度为1的结点个数,二叉树算表达式(C语言)
1、建立下图表达式二叉树,并求值。+*3##4##/8##4##2、统计二叉树的度为1的结点个数; 3、输出二叉树中从每个叶子结点到根结点的路径。#include&amp;lt;iostream&amp;gt;using namespace std;#define MAXSIZE 30typedef struct BT{ char data; struct BT *lchild,*rchi...原创 2018-11-22 21:36:48 · 12544 阅读 · 9 评论 -
以邻接矩阵为存储结构,采用深度优先遍历或广度优先遍历,输出图的所有顶点的值(C语言)
题目:以邻接矩阵为存储结构,采用深度优先遍历,输出图的所有顶点的值测试数据输入:6 6A B C D E FA BA CB EC EA DD F输出:BACEDF#include&amp;lt;iostream&amp;gt;using namespace std;#define MAXNUM 100char visited1[MAXNUM];typedef st...原创 2018-12-06 09:35:41 · 11756 阅读 · 7 评论 -
以邻接表作为存储结构,采用深度优先遍历,输出图的所有顶点的值(C语言)
题目以邻接表作为存储结构,采用深度优先遍历,输出图的所有顶点的值测试数据输入:6 6A B C D E FA BA CB EC EA DD F输出:BACEDF#include&lt;iostream&gt;using namespace std;#define MAXNUM 100char visited[MAXNUM];typedef struct ...原创 2018-12-06 13:07:17 · 7830 阅读 · 0 评论 -
创建一个顺序表(12 13 21 24 28 30 42 77),从键盘输入各元素的值
题目:创建一个顺序表(12 13 21 24 28 30 42 77),从键盘输入各元素的值#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。typed...原创 2018-12-15 19:18:43 · 8965 阅读 · 0 评论 -
查找顺序表里是否有元素28,是否有元素25?
题目查找顺序表里是否有元素28,是否有元素25?#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。typedef int ElemType; //Ele...原创 2018-12-15 19:27:33 · 463 阅读 · 0 评论 -
输出顺序表中所有元素
题目输出顺序表中所有元素。#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。typedef int ElemType; //ElemType 为可定义的...原创 2018-12-15 19:33:26 · 13787 阅读 · 0 评论 -
汉诺塔问题(C语言,递归)
问题:寺院里有3根柱子,第一根有64个盘子,从上往下盘子越来越大。方丈要求小和尚把这64个盘子全部移动到第3跟柱子上。在移动的时候,始终只能小盘子压着大盘子,而且每次只能移动一个。Hanoi Tower 的移动次数,思路:先:第一根柱子标记为a第二根柱子标记为b第三根柱子标记为c设盘子有n个根据移动盘子的规则,要把a上n个盘子全部移动到c上,无法判断最顶上的盘子先要放在哪儿(是...原创 2018-11-15 00:01:07 · 7943 阅读 · 0 评论 -
循环赛日程安排(C语言)
问题:一年一度的欧洲冠军杯马上就要打响,在初赛阶段采用循环制,设共有n队参加,初赛共进行(n-1)天,每队要和其他各队进行一场比赛。要求每队每天只能进行一场比赛,并且不能轮空。请按照上述需求安排比赛日程,决定每天各队的对手。对问题的理解:参考资料:《算法学习与应用 从入门到精通》张玲玲比赛日程安排算法训练 比赛安排...原创 2018-11-24 18:35:18 · 15030 阅读 · 9 评论 -
蓝桥杯 入门训练(c/c++)
蓝桥杯入门训练:A+B问题,序列求和、圆的面积、Fibonacci数列原创 2018-12-06 19:26:08 · 1406 阅读 · 0 评论 -
颠倒的价牌(C语言)
题目描述标题: 颠倒的价牌小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。其标价都是4位数字(即千元不等)。小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见p1.jpg)。这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958...原创 2018-10-28 21:12:23 · 676 阅读 · 0 评论 -
奖券数目(C语言)
题目: 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。#include&amp;lt;iostream&amp;gt;using namespace std;int main(...原创 2018-10-27 15:32:32 · 892 阅读 · 0 评论 -
错误票据(C语言)
问题描述某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。输入格式要求程序首先输入一个整数N(N&amp;amp;amp;amp;lt;100)表示后面数据行数。接...原创 2018-10-31 22:16:09 · 1938 阅读 · 0 评论