数据结构
文章平均质量分 54
.别拖至春天.
这个作者很懒,什么都没留下…
展开
-
数据结构与算法知识点汇总
系统性的学习了数据结构之后,对知识框架进行一个梳理,附上很多实例来加深记忆原创 2022-01-07 16:47:45 · 2316 阅读 · 4 评论 -
稀疏矩阵的处理(c语言)
这道题是真的折磨我太久了,之前有个测试用例一直没过,发现主要是矩阵乘法上面有点小问题,换了个思路,总算解决了,代码可能不够简洁,主要是在输出上比较繁琐,参考就可以,题挺恶心的,特别是对格式的要求等等现要求编程实现稀疏矩阵在“压缩”存储时的矩阵的常用操作,如输出、转置、求和、乘等。 即输入两个矩阵,完成如下操作:(1) 转置。对第一个矩阵进行转置并输出,前面输出标题 “The transformed matrix is:”(2) 矩阵加。如两个矩阵可以相加,进行两个矩阵的加运算并输出,前面输出标题 “T原创 2021-12-18 21:28:59 · 1339 阅读 · 0 评论 -
汉诺塔的非递归实现(堆栈)
题目借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。输入格式:输入为一个正整数N,即起始柱上的盘数。输出格式:每个操作(移动)占一行,按柱1 -> 柱2的格式输出。输入样例:在这里插入代码片...原创 2021-12-12 16:15:03 · 4628 阅读 · 0 评论 -
出栈序列的合法性
仅做个人笔记使用文章目录题目:输入格式:输出格式:输入样例:输出样例:解析:代码:题目:给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, …, N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5、N=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。输入格式:输入第一行给出 3 个不超过 1000 的正整数:M(堆栈最大容量)、N(入栈元素个数)、K(待检查的出栈序列个数原创 2021-12-09 12:19:17 · 288 阅读 · 0 评论 -
堆栈操作合法性
注:数据结构中对堆栈基本操作的简化综合题(仅做个人笔记记录)文章目录题目输入格式:输出格式:输入样例:输出样例:题解记录:代码:题目假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列原创 2021-12-08 21:56:24 · 193 阅读 · 0 评论 -
两个有序链表序列的合并(c语言)
(仅用作本人笔记记录)题目要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。输入样例:31 3 552 4 6 8 10输出样例:1 2 3 4 5 6 8 10 NULLNULL附上简陋步骤分析代码:List Merge(List L1, List L2) {原创 2021-11-25 17:56:11 · 1070 阅读 · 0 评论 -
求链式线性表的倒数第K项
题目给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5 6 7 8 9 0 -1输出样例7要是对创建链表不熟悉的可以参考这篇文章:最常用的创建链表的方法代码#include<stdio.h>#include<std原创 2021-11-23 19:48:26 · 207 阅读 · 0 评论 -
c语言如何创建一个链表(尾插法)
本文介绍一种本人常用的较为简单,比较标准的一种创建并使用链表的方法,尾插法,直接用代码演示了文末有完整代码导入所需要的头文件#include<stdio.h>#include<stdlib.h>#include<malloc.h>创建结构体typedef struct LNode{ int data;//结点的数据域 struct LNode* next; //结点的指针域}LNode, * List;//List为指向结构体LNod原创 2021-11-23 19:40:35 · 1945 阅读 · 0 评论 -
最长连续递增子序列
题目给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。输入格式:输入第1行给出正整数n(n≤10**5 );第2行给出n个整数,其间以空格分隔。输出格式:在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。输入样例:151 9 2 5 7 3 4 6 8 0 11 15 17 17 10输出样例:3 4 6 8解析:直接写代码注释了原创 2021-11-21 20:35:00 · 241 阅读 · 0 评论 -
1-5 用扑克牌计算24点
题目一副扑克牌的每张牌表示一个数(J、Q、K 分别表示 11、12、13,两个司令都表示 6)。任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式。每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个且可以重复取。运算遵从一定优先级别,可加括号控制,最终使运算结果为 24。请输出一种解决方案的表达式,用括号表示运算优先。如果没有一种解决方案,则输出 -1 表示无解。输入格式:输入在一行中给出 4 个整数,每个整数取原创 2021-11-18 20:24:15 · 173 阅读 · 0 评论 -
海盗分赃(c语言)
题目P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略:首先,P 个海盗通过抽签决定 1 - P 的序号。然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得到包括 1 号在内的绝对多数(即大于半数)同意,则按照该分配方案执行,否则 1 号将被投入大海喂鲨鱼;而后依次类似地由第 2 号、第 3 号等等海盗提出方案,直到能够获得绝对多数同意的方案出现为止,或者只剩下最后一位海盗,其独占所有钻石。请编写一个程序,给出第 1 号海盗的钻石分配方案中自己分得的钻石数量原创 2021-11-18 17:07:01 · 356 阅读 · 0 评论 -
两个有序链表序列的交集(c语言)
题目已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1输出样例:2 5解析:首先根据题目要求,需要用链表序列来实现,实际上这道题用数组的形式实现线性结构也是可以的,对原创 2021-11-18 16:52:45 · 1961 阅读 · 2 评论 -
素因子分解
1-2 素因子分解题目输入格式:输入long int范围内的正整数 N。输出格式:按给定格式输出N的素因式分解表达式,即 N=p1k1*p2k2*…*pm^km,其中pi为素因子并要求由小到大输出,指数ki为pi的个数;当ki为1即因子pi只有一个时不输出ki。输入样例:1323输出样例:1323=3^3*7^2解析刚开始用暴力求解解出来了,发现其实可以用递归的思路来解决,递归问题中最难的就是找到递归方程组,这道题的递归方程组可以写成这样:f(x)=a^ b+f(x/a^b);递原创 2021-11-17 23:57:40 · 1437 阅读 · 0 评论 -
数列求和-加强版
题目给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3输出样例:123解析这道题的重点是对大数的处理,本来是想用数组模拟进位,但是感觉很复杂,可以当作暴力解法用,其实只需要从个位开始,所有的个位相加取余,将超过的部分向前进位,最后以数组的形式输出,时间复杂度会很低。代码原创 2021-11-15 22:10:51 · 1661 阅读 · 1 评论 -
0-5 Shuffling Machine
Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid “inside jobs” where employees collaborate with gamblers by performing inadequate shuffles, many casinos employ原创 2021-11-09 17:16:50 · 201 阅读 · 1 评论 -
0-4 Have Fun with Numbers
题目:Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a d原创 2021-11-09 17:08:33 · 176 阅读 · 0 评论 -
0-3 数组元素循环右移问题
题目:输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。输入样例:6 21 2 3 4 5 6输出样例:5 6 1 2 3 4代码#include <stdio.h>#include <stdlib.h>int main(){ int a,b,i,j; scanf("%d %d",原创 2021-11-09 17:02:53 · 143 阅读 · 0 评论 -
0-2 素数对猜想
题目输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。输入样例:20输出样例:4代码:#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ int n,i,j=0; int s=0; int a[100000]= {0}; scanf("%d",&n); for(i=2; i&原创 2021-11-09 17:00:18 · 106 阅读 · 0 评论 -
0-1打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定符号组成的最大的沙漏形状,原创 2021-11-09 16:56:50 · 127 阅读 · 0 评论