数据结构与算法
文章平均质量分 53
Xenoverse
Sdibt iMaker/山东工商学院 大二在读
展开
-
C语言利用栈的操作实现判断字符串中的括号是否匹配(只考虑半角括号:( ) { } [ ])
C语言利用栈的操作实现判断字符串中的括号是否匹配(只考虑半角括号:( ) { } [ ])题目均在sdibt acm oj上AC,参考《深入浅出数据结构和算法》教材,逐个复制即可运行,欢迎评论指正! Description 输入一串字符串,编写算法判断字符串中的括号是否匹配,如果匹配,输出1,否则输出0。注: 只考虑半角括号:( ) { } [ ],不考虑全角括号:( ) 【 ...原创 2018-10-06 10:09:30 · 9189 阅读 · 2 评论 -
C语言利用顺序表求两个集合的差集
DescriptionA和B分别表示两个集合,集合中的元素为整数,C=A和B的差集,计算并依次输出C中的元素。要求:用顺序表存储,另辟空间保存C中元素 。Input输入集合A的元素个数n(n>=0)依次输入A中的元素,以空格分隔。输入集合B的元素个数m(m>=0)依次输入B中的元素,以空格分隔。Output依次输出C中的元素,以空格分隔。Sampl...原创 2018-12-12 12:34:37 · 9688 阅读 · 4 评论 -
C语言利用链表求集合的交集
Description 假设元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。输入A和B集合中的元素;输出A和B的交集C中的元素。提示:存储结构采用带表头结点的循环单链表,结点结构如下:typedef struct Node{ int da...原创 2018-12-12 12:36:04 · 3637 阅读 · 2 评论 -
C语言建立循环单链表并输出
Description 依次输入n(n>0)个整数,建立带表头结点的循环单链表,并依次输出单链表中的元素值。提示:结点结构如下:typedef struct Node{ int data; struct Node *next;}LNode,*LinkList;要求:(1)编写函数,从键盘输入n个数,建立带头结点的循环单链表。 (2...原创 2018-12-12 12:38:15 · 5764 阅读 · 1 评论 -
C语言利用循环单链表解决约瑟夫问题
Description 编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他的顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。请设计一个程序输出出列顺序。提示:存储结构采用不带头结点的循环单链表,...原创 2018-12-12 12:40:01 · 1551 阅读 · 0 评论 -
C语言利用链表实现求两个集合的差集
Description线性表A和B分别表示两个集合A和B(同集合中的元素值各不相同、无序),用带头结点的单链表存储。另辟空间构成一个线性表C,编写算法求C=A和B的差集。 结点结构:typedef struct Node{ int data; struct Node *next;}LNode,*LinkList;要求:(1)编写函数,实现输入数据建立集合单链...原创 2018-12-12 12:41:52 · 6454 阅读 · 1 评论 -
Java算法学习:java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制)
java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制)这几天在复习C语言的数据结构栈和队列那一章的时候,看到利用栈的特性FILO实现的进制转换十分简洁想起了java中实现栈的操作十分方便(不用自己写.h文件,内部util.Stack包已经封装好)所以用这个来写一个进制转换作为记录十进制怎么转化为二进制呢? public void Dex2Bin(int n...原创 2018-12-19 10:59:41 · 13265 阅读 · 0 评论 -
Java算法学习:求取一个集合中的所有子集
求取一个集合中的所有子集package 算法学习;import java.util.HashSet;import java.util.Set;/** * Page Description: * User: Yelihu * Date: 2019-03-02 * Time: 下午 3:02 * Function: */public class 增量迭代 { p...原创 2019-03-13 21:12:30 · 2350 阅读 · 0 评论 -
Java算法学习:使用回溯求一个数组的全排列(递归求解)
全排列,简单的来说就是n个数字中,列出n!(n的阶乘)个排列组合,比如:123的全排列有123、132、213、231、312、321这种概念在修完高中要求的概率论之后,就应该会有。那么使用Java语言实现这种全排列,比如求一个数组1,2,3的全排列,这种应该如何实现呢,这几天在学习dfs的时候,遇到了一类题型,利用的就是全排列的思想,把所有可能的结果都列出来。下面我来讨论一个全排列的...原创 2019-03-15 16:52:36 · 2332 阅读 · 1 评论 -
Java算法学习:蓝桥杯——七对数字(DFS✖回溯)
题目:今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:17126425374635当然,如果把它倒过来,也是符合要求的。请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。注意:只填写这个14位的整数,不能填写任何多余的内容,比如...原创 2019-03-16 15:25:33 · 297 阅读 · 0 评论 -
随笔:蓝桥杯——分糖果
问题:问题描述:有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都把自己的糖果分一半给左手边的孩子。一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。反复进行这个游戏,直到所有小朋友的糖果数都相同为止。你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。输入格式程序首先读入一个整数N(2<N<10...原创 2019-03-16 17:03:28 · 364 阅读 · 0 评论 -
Java算法学习:蓝桥杯——地宫寻宝(DFS+动态规划—记忆型递归)
Java算法学习:蓝桥杯——地宫寻宝(DFS✖记忆型递归)题目:标题:地宫取宝 X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起...原创 2019-03-20 22:10:57 · 1325 阅读 · 0 评论 -
C语言堆排序(HeapSort)的思想和代码实现
C语言堆排序(HeapSort)的思想和代码实现经过一晚上和有一早上的思考和学习,在Clion上反复的单步调试之后,我总结了关于堆排序这个算法的一点体会。现在来记录一下,如有错误,欢迎批评指出,谢谢!首先:什么是堆排序,为什么叫堆?Heapsort是一种根据选择排序的思想,利用堆这种数据结构 所设计的一种排序算法选择排序的思想是什么?:每一趟比较找到这个序列中的最值,拿出来和最前面...原创 2018-12-09 14:07:42 · 1266 阅读 · 0 评论 -
C语言利用快速排序(QuickSort)实现对数组的排序
快速排序是一种交换排序,是对冒泡排序的改进利用冒泡排序的特性,对目标进行分段冒泡#include "stdio.h"int a[6];//定义一个数组,长度为6,实际存放5个元素,/** * 快速排序函数 * @param left 最左边的指针 * @param right 最右边的指针 */void QuickSort(int left,int right){ ...原创 2018-12-05 14:07:05 · 4099 阅读 · 3 评论 -
C语言利用队列的操作实现队列中元素的逆置(逆序输出)
C语言利用队列的操作实现队列中元素的逆置(逆序输出) 题目均在sdibt acm oj上AC,参考《深入浅出数据结构和算法》教材,逐个复制即可运行,欢迎评论指正!Description假设队列中有n个整数,编写算法实现将队列中的元素逆置,要求利用栈实现。要求:(1)编写函数分别实现队列初始化、判断队空、判断队满、入队、出队的操作;(2)编写函数分别实现栈的初始化、判断栈...原创 2018-10-06 10:49:04 · 15006 阅读 · 4 评论 -
C语言利用双向栈的操作实现两个栈共享一段空间并且分别存放奇偶数
C语言利用双向栈的操作实现两个栈共享一段空间并且分别存放奇偶数题目均在sdibt acm oj上AC,参考《深入浅出数据结构和算法》教材,逐个复制即可运行,欢迎评论指正!Description两个栈共享一段存储空间,栈1自左向右增长,栈2自右向左增长,双向栈的存储结构如下:# define MAXSIZE 10typedef struct{ ElemType data[M...原创 2018-10-06 11:22:45 · 5887 阅读 · 4 评论 -
C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序、中序、后序输出二叉树。
C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序、中序、后序输出二叉树。Description根据给定的字符串生成二叉树并前序、中序、后序此二叉树。Input给定一字符串,其中#表示空。例:上图输入为HDB#A##C##G#FE###Output分别输出此二叉树前序、中序和后序。Sample InputHDB#A##C##G#FE###...原创 2018-10-18 23:36:07 · 3827 阅读 · 2 评论 -
C语言利用二叉树的操作实现输出二叉树中树叶的个数,1度节点的个数,2度节点的个数
C语言利用二叉树的操作实现输出二叉树中树叶的个数,1度节点的个数,2度节点的个数 欢迎批评...原创 2018-10-18 23:50:22 · 2695 阅读 · 0 评论 -
C语言利用哈夫曼树实现哈夫曼树生成和哈夫曼编码的实现
#include <stdio.h>#include <stdlib.h>#include <string.h>#define MaxSize 50#define MAX 32767 /* int 8位整数*/typedef struct{ char c; /* 字符; */ in...原创 2018-10-26 15:20:06 · 4785 阅读 · 1 评论 -
C语言利用图的邻接表的存储方式实现求有向图的入度和出度以及无向图的度数
Description图采用邻接表为存储结构,图中的顶点数为n(0<n<=20),n个顶点的信息依次为 0,1,...,n-1。编写程序,输入图的类型(0:无向图,1:有向图)、图中顶点数、边数、边的偶对,建立图的邻接表。如果是无向图,计算并输出每个顶点的度;如果是有向图,计算并输出每个顶点的的入度和出度。Input输入:图的类型(0 或1)顶点数,边数顶点...原创 2018-11-11 16:51:16 · 18852 阅读 · 8 评论 -
C语言利用图的邻接矩阵的存储方式实现有向图和无向图的广度优先搜索(BFS)
#include <stdio.h>#include <stdlib.h>#define Max_Vetex_Num 100#define MAXSIZE 20#define STACK_SIZE 30typedef struct { int vexs[Max_Vetex_Num]; int arcs[Max_Vetex_Num][Max_Ve...原创 2018-11-20 18:46:20 · 2446 阅读 · 0 评论 -
C语言利用图的邻接矩阵的存储方式实现有向图和无向图的深度优先搜索(DFS)
C语言利用图的邻接矩阵的存储方式实现有向图和无向图的深度优先搜索(DFS)Description图采用邻接矩阵存储,图中顶点数为n(0<n<20),顶点信息为整数,依次为0,1,..,n-1。编写函数,输入图的类型,0:无向图,1:有向图;输入图的顶点数、边数、边的偶对,建立邻接矩阵;编写函数,实现图的深度优先搜索,输出深度优先搜索序列。调用上述函数,从0号顶点出发...原创 2018-11-20 18:46:47 · 9076 阅读 · 1 评论 -
图的拓扑排序(邻接表)
#include <stdio.h>#include <stdlib.h>#define Max_Vertex_Num 100#define STACK_SIZE 30typedef struct ArcNode{ int adjvex; //此题用不到 struct ArcNode *nextarc;//下一个节点 int weight...原创 2018-11-21 10:51:07 · 1497 阅读 · 0 评论 -
C语言利用图的邻接矩阵的存储方式实现拓扑排序
C语言利用图的邻接矩阵的存储方式实现拓扑排序在拓扑排序中,我们的对象是有向无环图,这种图是描述工程进行过程的有效工具。比如“课程开课顺序,施工进程,软件开发进程”,我们在使用有向无环图表示他们的时候,我们往往使用顶点表示这些事件中的一个活动,顶点和顶点之间的有向边表示一种活动和活动之间的先后顺序。如上就是一种有向无环图,比如在活动c1进行完成之后,c8、c3才可以开始进行。通常,我们...原创 2018-11-21 19:52:51 · 3861 阅读 · 0 评论 -
Java算法学习:蓝桥杯——三羊献瑞(改进之后的枚举)
题目:三羊献瑞观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞------------------- 三 羊 生 瑞 气其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。 思路:比较简单的一个枚举题,常规的思路是先把中文转化为字母。比如:...原创 2019-03-21 10:59:33 · 440 阅读 · 0 评论