![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构习题
文章平均质量分 68
如题,主要是学校数据结构的作业习题
m明月Java3
现就职于字节,立志成为全栈选手,你早上从床上坐起,是因为你期待这一天。
展开
-
折半查找(c语言)
折半查找描述格式样例题解及注释描述给定一个长度为n(n≤10000)的单调递增整数数列,和要查找的整数,利用折半查找算法找到该数据。输出成功找到该数据所需的比较次数;如果查找未成功,则输出0。比如有序列: 15 25 26 34 40 41 49 57 64 74要查找25,则查找次数为2次。再有序列:10 19 24 30 31 41 49 54 57 61 63 65 72 78 83要查找31,则查找次数为4次。再有序列: 7 17 20 27 30 38 48 52 55 61 66原创 2021-07-22 11:54:59 · 3106 阅读 · 1 评论 -
求解一元三次方程(c语言)
求解一元三次方程描述格式样例题解及注释描述格式样例题解及注释#include <stdio.h>#include <math.h>#include <stdlib.h>int main(){ double m, n; double i , j, sum; double eps = 1e-7;//eps是精度控制,此处为10^-7 double a, b, c, d; double f1, f2; int r; scanf("%lf原创 2021-07-22 11:46:12 · 3460 阅读 · 1 评论 -
生成身份证校验码(c语言)
生成身份证校验码描述格式样例题解及详细注释描述我国的居民身份证是18位字符的编码,每个人的编码都是唯一的,校验规则如下:∑(ai*wi)mod 11 = 1i表示号码字符从左至右包括校验码字符在内的位置序号;ai表示第i位置上的号码字符值;Wi表示第i位置上的加权因子。即将各位上的数值乘上位权之和对11取余,余数为1则表示该编码正确。注意:如果最后一位校验码是“X”,则代表该校验码的数值为10。各位的权值依次是:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1例如某身份原创 2021-07-22 11:34:19 · 4769 阅读 · 1 评论 -
按字典规则比较字符串大小(c语言)
按字典规则比较字符串大小描述格式样例题解及注释描述按照字典规则比较两个英文字符串的大小,基本规则如下:(1)字符串左对齐比较(2)字母无大小写对应关系时忽略大小写,比如’B’不仅大于’A’,也大于’a’(3)字母有大小写对应关系时,大写小于小写,比如’A’小于’a’(4)字符串中只有大小写字母和空格,空格小于任何字母例如:“aBc”<“abc”,“abcdef”<“abD”,“Abcd”<“abc”格式输入格式输入是两行,每行一个字符串,长度均小于1000输出格式原创 2021-07-22 11:25:39 · 8978 阅读 · 1 评论 -
删除单词后缀(c语言)
删除单词后缀描述格式样例题解及注释描述描述给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。格式输入格式输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。输出格式输出按照题目要求处理后的单词。样例输入样例referer输出样例refer题解及注释这道题的话,就if判断就好了。#include <stdio.h>#include <string.h>原创 2021-07-22 10:12:52 · 3422 阅读 · 1 评论 -
身份证号码验证(c语言)
身份证号码验证描述格式样例题解及注释描述居民身份证是18位字符的编码,每个人的编码都是唯一的,校验规则如下:∑(ai*wi)mod 11 = 1i表示号码字符从左至右包括校验码字符在内的位置序号;ai表示第i位置上的号码字符值;Wi表示第i位置上的加权因子。即将各位上的数值乘上位权之和对11取余,余数为1则表示该编码正确。注意:如果最后一位校验码是“X”或“x”,则代表该校验码的数值为10。各位的权值依次是:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1例如某身份证号原创 2021-07-22 09:41:58 · 15872 阅读 · 4 评论 -
汉诺塔问题(C语言)
汉诺塔问题描述格式样例题解及详细注释描述约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。这是一个著名的问题,几乎所有的教材上都有这个问题。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:18,446,744,073,709,551,615这是一个天文数字,若每一微秒可能计算(并不输出)一次移动原创 2021-07-21 19:56:11 · 875 阅读 · 0 评论 -
判断出栈序列合法性(c语言)
判断出栈序列合法性描述格式样例题解及注释描述有1、2、3、4、5、6、7这7个数字依次全部入栈后再出栈,在入栈的过程中栈中的数据也可以随时出栈,一直到整个栈为空。将出栈得到的数字依次排列,就可以得到一个“合法”的序列;对应的,有些形式的排列是无论如何调整入栈和出栈顺序也无法得到的,被称为“非法”序列。比如:“1 2 3 4 6 7 5” 和“1 2 5 6 4 3 7”都是合法的序列,而“1 2 5 7 3 4 6”和“1 2 6 3 4 5 7”以及“1 2 6 3 5 4 7”都是非法的序列。请原创 2021-07-21 19:42:27 · 5895 阅读 · 0 评论 -
扑克牌魔术(c语言)
扑克牌魔术描述格式样例题解及详细代码描述东哥是个乡村魔术师,COVID-19疫情期间闲来无事,用扑克牌给邻居们表演了一场小魔术:他将一叠预先洗好的扑克牌背面朝上拿在手中,先将最上面的扑克牌放到最下面,然后打开现在最上面的这张扑克牌,并放到边上,这是一张1;然后又将最上面的扑克牌放到最下面,再次打开最上面的扑克牌,这次是一张2;他依次重复这两个步骤:(1)将最上面的放到最下面,(2)打开最上面的这张扑克牌,最终打开的扑克牌依次是:1,2,3,4……邻居们都猜不出原来这叠扑克牌是怎么放的,现在请你帮原创 2021-07-21 17:15:32 · 883 阅读 · 0 评论 -
求f(x,n)(c语言)
求f(x,n)描述格式样例题解及详细注释描述已知用递归函数求解。格式输入格式第一数是x的值,第二个数是n的值。输出格式函数值,保留两位小数。样例输入样例1 2输出样例0.40题解及详细注释#include <stdio.h>double dg(double x,double n){ if(n==1) return x/(1+x); else return x/(n+dg(x,n-1)); //从上往下递归递归}int main(){原创 2021-07-21 16:59:23 · 2678 阅读 · 0 评论 -
猴子选大王(c语言)
猴子选大王描述格式样例题解及详细注释描述有n只猴子(编号从1到n),按顺时针方向围成一圈选大王。规则是从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样重复下去,直到圈内只剩下一只猴子时,这只猴子就是大王。格式输入格式输入只有一行,两个数据,分别是n和m输出格式输出一个数据,大王的编号样例输入样例10 5输出样例3题解及详细注释本文用循环链表来做。当然也可以用模拟链表来做,各有所爱。#include <stdio.h>#i原创 2021-07-21 16:17:54 · 9581 阅读 · 0 评论 -
括弧匹配检验(c语言)
括弧匹配检验描述格式样例题解及详细注释描述假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如 () 或 [([][])] 等为正确的匹配,[(]) 或( 或 (([)]) 均为错误的匹配。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。格式输入格式输入仅一行字符(字符个数小于255)。输出格式匹配就输出原创 2021-07-21 12:54:53 · 1855 阅读 · 1 评论 -
输出链表(c语言)
输出链表描述格式样例题解及详细注释描述根据给定的数据建立一个由n(n≤1000)个元素组成的链表,然后按逻辑顺序输出其中所有的数据。每个元素节点由两个域组成:第一个域存储数据,第二个域存储后继元素所在的位置。特别的,头结点的第一个域用来存储整个链表的长度。例如头结点(5, 3)表示长度为5,后继元素在3号位置;元素节点(14,7)表示数据值为14,后继节点在7号位置。如果后继指针为0则表示链表结束。例如: (6, 6)(673, 4)(428, 1)(685, 2)(170, 0)(488, 3)(原创 2021-07-21 09:44:47 · 7195 阅读 · 1 评论 -
删除相同元素(c语言)
删除相同元素描述格式样例题解及详细注释描述给定一个长度为n(n≤10000)的非递减序列a,删除其中所有的重复元素,得到一个严格单调递增序列。格式输入格式输入数据为两行,第一行是整数n,第二行是n个整数组成的非递减序列输出格式输出去掉重复元素之后得到的严格单调递增序列样例输入样例101 1 3 6 6 7 7 7 12 12输出样例1 3 6 7 12题解及详细注释#include<stdio.h>#include <stdlib.h>int mai原创 2021-07-21 09:13:06 · 2885 阅读 · 1 评论 -
逆序输出链表(C语言)
逆序输出链表描述格式样例题解及详细注释描述根据给定的数据建立一个由n(1≤n≤1000)个元素组成的链表,然后按逻辑顺序逆序输出其中所有的数据。每个元素节点由两个域组成:第一个域存储数据,第二个域存储后继元素所在的位置。特别的,头结点的第一个域用来存储整个链表的长度。例如头结点(5, 3)表示长度为5,后继元素在3号位置;元素节点(14,7)表示数据值为14,后继节点在7号位置。如果后继指针为0则表示链表结束。例如: (6, 6)(673, 4)(428, 1)(685, 2)(170, 0)(48原创 2021-07-21 09:01:30 · 2296 阅读 · 0 评论 -
删除多个元素(C语言实现)
删除多个元素描述格式样例题解及详细注释描述从长度为n的整数序列中删除指定位序的m个元素,按照原顺序输出剩余的元素。其中,1≤m≤n≤1000,原整数序列为a;要删除的元素位序按照严格单调递增的方式存储在序列b中,其中元素b[i]表示要从a中删除的元素的位序,输入数据保证0≤b[i]≤n-1, b[i]<b[i+1]。例如:n=10,m=5,a={46, 7, 27, 50, 71, 79, 21, 56, 18, 77},b={0, 2, 3, 4, 5},则删除后得到序列为{7, 21, 56,原创 2021-07-21 00:01:53 · 1768 阅读 · 1 评论 -
合并两个有序表(C语言)
合并两个有序表描述格式样例题解及详细注释描述已知两个严格单调递增的表a(长度为n,n≤10000)和表b(长度为m,m≤10000),其中数据均为正整数,将其合并成一个严格单调递增的表c。格式输入格式输入为3行,第一行两个数n和m,表示序列的长度。第二行是一个长度为n的表a,第三行是长度为m的表b。输出格式输出合并后的表c样例输入样例5 62 4 7 9 123 4 8 9 12 15输出样例2 3 4 7 8 9 12 15题解及详细注释#include <stdio原创 2021-07-20 22:47:00 · 4472 阅读 · 0 评论 -
质因数分解(c语言)
质因数分解描述格式样例描述已知正整数n(n≤1000000000)是两个不同质数的乘积,试求出较大的那个质数。格式输入格式输入只有一行,包含一个正整数 n。输出格式输出只有一行,包含一个正整数 p,即较大的那个质数。样例输入样例21输出样例7#include <stdio.h>#include <math.h>int main(){ int n,i,j,max; scanf("%d",&n); for(i=2;i<原创 2021-07-17 08:51:15 · 6647 阅读 · 2 评论 -
开关灯(c语言数据结构习题)
开关灯描述假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。格式输入格式输入正整数N和M,以原创 2021-07-16 17:33:58 · 6689 阅读 · 3 评论