数据结构
祝我得偿所愿呀
努力就一定会有收获!
展开
-
表达式括号匹配
假设一个表达式由英文字母(小写)、运算符(+、-、*、/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。 输入格式:输入文件stack.in包括一行数据,即表达式。 输出格式:输出文件stack.out包括一行,即“YES”或“NO”。 输入样例#1: ...原创 2018-05-29 22:20:50 · 1340 阅读 · 0 评论 -
6-7 '字符串03-字符串联接(复合加赋值)(10 分)
C语言标准函数库中包括 strcat 函数,用于字符串联接(复合加赋值)。作为练习,我们自己编写一个功能与之相同的函数。 函数原型// 字符串联接(复合加赋值) char* StrCat(char *dst, const char *src);说明:src 为源串的起始地址,dst 为目的串起始地址。函数将 src 串添加到 dst 串末尾,函数值为 dst。 裁判程序//...原创 2018-09-10 20:21:11 · 4787 阅读 · 0 评论 -
7-4 二进制数转十进制数(20 分)
输入仅由0和1构成的整数(即“二进制”数), 输出该数对应的十进制数。 输入格式:输入仅由0和1构成的整数。 输出格式:输出相应的十进制数。 输入样例:在这里给出一组输入。例如:101100输出样例:在这里给出相应的输出。例如:44#include<stdio.h>#include<string.h>#include<math...原创 2018-09-10 21:01:40 · 6831 阅读 · 2 评论 -
6-3 '字符串02-字符串复制(赋值) (10 分)
C语言标准函数库中包括 strcpy 函数,用于字符串复制(赋值)。作为练习,我们自己编写一个功能与之相同的函数。函数原型// 字符串复制(赋值)char* StrCpy(char *dst, const char *src);说明:src 为源串的起始地址,dst 为目的串起始地址,函数将 src 串复制到 dst 串,函数值为 dst。裁判程序#include <stdio....原创 2018-09-23 21:10:43 · 5585 阅读 · 1 评论 -
6-4 带头结点的链式表操作集 (20 分)
本题要求实现带头结点的链式表操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef struct...原创 2018-09-23 21:12:49 · 5411 阅读 · 0 评论 -
7-1 字符串替换 (15 分)
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:原字母 对应字母A ZB YC XD W… …X CY BZ A输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出替换完成后的字符串。输入样例:Only the 11 CAPItaL LeTtERS are replaced.输出样例:...原创 2018-09-23 21:36:58 · 9062 阅读 · 0 评论 -
6-1 两个有序链表序列的合并 (15 分)
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据 /PtrToNode Next; / 指向下一个结点的指针 /...原创 2018-10-14 13:42:57 · 18082 阅读 · 8 评论 -
6-4 另类堆栈 (15 分)
在栈的顺序存储实现中,另有一种方法是将Top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满?函数接口定义:bool Push( Stack S, ElementType X );ElementType Pop( Stack S );其中Stack结构定义如下:typedef int Position;typedef struct SNode...原创 2018-10-14 14:07:57 · 4306 阅读 · 0 评论 -
6-1 求二叉树高度 (20 分)
本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;...原创 2018-10-08 22:28:18 · 9189 阅读 · 0 评论 -
7-4 找最小的字符串 (15 分)
本题要求编写程序,针对输入的N个字符串,输出其中最小的字符串。输入格式:输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。输出格式:在一行中用以下格式输出最小的字符串:Min is: 最小字符串输入样例:5LiWangZhaJinXian输出样例:Min is: Jin代码如下:#include<bits...原创 2018-10-09 22:20:00 · 15328 阅读 · 2 评论 -
7-5 找最长的字符串 (15 分)
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。输入格式:输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。输出格式:在一行中用以下格式输出最长的字符串:The longest is: 最长的字符串如果字符串的长度相同,则输出先输入的字符串。输入样例:5liwangzhangjinxiang输出样例:...原创 2018-10-09 22:41:15 · 15526 阅读 · 2 评论 -
7-6 字符串逆序 (15 分)
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:在一行中输出逆序后的字符串。输入样例:Hello World!输出样例:!dlroW olleH#include<stdio.h>#include<string.h>int main(){ char s[1...原创 2018-10-09 22:48:29 · 6026 阅读 · 0 评论 -
7-7 最长对称子串 (25 分)
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:Is PAT&TAP symmetric?输出样例:11#include<std...原创 2018-10-09 23:00:44 · 1628 阅读 · 0 评论 -
6-2 双端队列 (25 分)
双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作:Push(X,D):将元素X插入到双端队列D的头;Pop(D):删除双端队列D的头元素,并返回;Inject(X,D):将元素X插入到双端队列D的尾部;Eject(D):删除双端队列D的尾部...原创 2018-10-09 23:03:48 · 9057 阅读 · 1 评论 -
7-2 查验身份证 (15 分)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8 9 10M:1 0 X 9 8 7 6 5 4 3 2现在给定一些身份...原创 2018-10-10 19:10:31 · 4371 阅读 · 0 评论 -
7-3 单词长度 (15 分)
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it’s算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。输入格式:输入在一行中给出一行文本,以.结束提示:用scanf("%c",…);来读入一个字符,直到读到.为止。输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔...原创 2018-10-10 19:11:46 · 3178 阅读 · 1 评论 -
7-3 括号匹配 (25 分)
给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。输入格式:输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。输出格式:如果括号配对,输出yes,否则输出no。输入样例1:sin(10+20)输出样例1:yes输入样例2:{[}]输出样例2:no#in...原创 2018-10-10 19:24:30 · 5797 阅读 · 0 评论 -
6-2 折半查找的实现 (10 分)
给一个严格递增数列,函数Search_Bin(SSTable ST, KeyType key)用来二分地查找key在数列中的位置。函数接口定义:Search_Bin(SSTable ST, KeyType key)其中ST是有序表,key是查找的值裁判测试程序样例:#include <stdio.h>#include <stdlib.h>#define NO...原创 2018-11-18 13:42:40 · 2487 阅读 · 0 评论 -
6-8 '字符串04-比较字符串(10 分)
C语言标准函数库中包括 strcmp 函数,用于字符串的比较。作为练习,我们自己编写一个功能与之相同的函数。 函数原型// 比较字符串 int StrCmp(const char *str1, const char *str2);说明:str1 和 str2 分别为两个字符串的起始地址。按字典排序法,若 str1 串值大于 str2,则函数值为正整数;若 str1 串值小于 str2,...原创 2018-09-10 20:20:12 · 4788 阅读 · 2 评论 -
6-6 '字符串01-字符串长度(10 分)
C语言标准函数库中包括 strlen 函数,用于计算字符串的长度。作为练习,我们自己编写一个功能与之相同的函数。 函数原型// 字符串长度 int StrLen(const char *str);说明:str为串的起始地址,函数值为字符串的长度(不含结束标记’\0’)。 裁判程序#include <stdio.h>// 字符串长度int StrLen(cons...原创 2018-09-10 19:58:32 · 4350 阅读 · 0 评论 -
7-7 符号配对(20 分)
请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。 输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。 输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出...原创 2018-09-10 15:42:23 · 8388 阅读 · 3 评论 -
最长公共子序列
描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。 tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。输入 第一行给出一个整...原创 2018-07-29 12:36:50 · 148 阅读 · 0 评论 -
P1945 放苹果
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。 输出 对输入的每组数据M和N,用一行输出相应的K。 样例输入1 7 3样例输出8#in...原创 2018-07-30 13:33:56 · 178 阅读 · 0 评论 -
吝啬的国度
描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。输入 第一行输入一个整数M表示测试数据共有M(1<=M<=5)组 每组测试数据的第一行输入一个正整数N(1<=N<=1000...原创 2018-07-27 14:01:11 · 114 阅读 · 0 评论 -
无聊的小明
描述 这天小明十分无聊,没有事做,但不甘于无聊的小明聪明的想到一个解决无聊的办法,因为他突然对数的正整数次幂产生了兴趣。 众所周知,2的正整数次幂最后一位数总是不断的在重复2,4,8,6,2,4,8,6……我们说2的正整数次幂最后一位的循环长度是4(实际上4的倍数都可以说是循环长度,但我们只考虑最小的循环长度)。类似的,其余的数字的正整数次幂最后一位数也有类似的...原创 2018-07-30 19:32:15 · 279 阅读 · 0 评论 -
组合数
描述 找出从自然数1、2、… 、n(0小于n小于10)中任取r(0小于r小于等于n)个数的所有组合。输入 输入n、r。 输出 按特定顺序输出所有组合。 特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 样例输入5 3样例输出543542541532531521432431421321#incl...原创 2018-07-28 12:48:12 · 1249 阅读 · 0 评论 -
蛇形填数
描述 在n*n方陈里填入1,2,…,n*n,要求填成蛇形。例如n=4时方陈为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4输入 直接输入方陈的维数,即n的值。(n<=100) 输出 输出结果是蛇形方陈。 样例输入3样例输出7 8 16 9 25 4 3#...原创 2018-07-28 13:17:28 · 145 阅读 · 0 评论 -
懒省事的小明
描述 小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。小明决定把所有的果子合成一堆。 因为小明比较懒,为了省力气,小明开始想点子了: 每一次合并,小明可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。小明在合并果子时总共消耗的体力等于...原创 2018-08-01 12:24:58 · 159 阅读 · 0 评论 -
三点顺序
描述现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的?如:图1:顺时针给出图2:逆时针给出 &lt;图1&gt; &lt;图2&gt;输入 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示A,B,C三个点的横纵坐标...原创 2018-08-01 12:59:30 · 157 阅读 · 0 评论 -
阶乘因式分解(二)
描述 给定两个数n,m,其中m是一个素数。 将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m。 注:^为求幂符号。输入 第一行是一个整数s(0小于s小于等于100),表示测试数据的组数 随后的s行, 每行有两个整数n,m。 输出 输出m的个数 样例输入3100 516 21000000000 ...原创 2018-08-01 13:20:24 · 305 阅读 · 0 评论 -
超级台阶
描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法。输入 输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。 输出 对于每个测试实例,请输出不同走法的数量。...原创 2018-08-01 16:58:40 · 130 阅读 · 0 评论 -
7-1 数组循环左移(20 分)
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式...原创 2018-09-06 09:11:44 · 10818 阅读 · 2 评论 -
7-1 掉入陷阱的数字(15 分)
对任意一个自然数N0,先将其各位数字相加求和,再将其和乘以3后加上1,变成一个新自然数N1;然后对N1重复这种操作,可以产生新自然数N2;……多次重复这种操作,运算结果最终会得到一个固定不变的数Nk,就像掉入一个数字“陷阱”。本题要求对输入的自然数,给出其掉入“陷阱”的过程。 输入格式:在一行内给出一个自然数N0(N0<30000)。 输...原创 2018-09-06 09:31:07 · 1367 阅读 · 0 评论 -
7-1 掉入陷阱的数字(15 分)
对任意一个自然数N0,先将其各位数字相加求和,再将其和乘以3后加上1,变成一个新自然数N1;然后对N1重复这种操作,可以产生新自然数N2;……多次重复这种操作,运算结果最终会得到一个固定不变的数Nk,就像掉入一个数字“陷阱”。本题要求对输入的自然数,给出其掉入“陷阱”的过程。 输入格式:在一行内给出一个自然数N0(N0<30000)。 输...原创 2018-09-10 15:37:42 · 7210 阅读 · 0 评论 -
7-3 求前缀表达式的值(25 分)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。 输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、\以及运算数,不同对象(运算数、运算符号)之间以空格分隔。 输出格式:输出前缀表达式的运算结...原创 2018-09-10 15:39:21 · 5166 阅读 · 3 评论 -
7-4 找完数(20 分)
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。 输入格式:输入在一行中给出2个正整数m和n(1 #include <stdio.h>void print(int num){ printf("%d = ",num); int i; for(i=1;...原创 2018-09-10 15:40:21 · 5837 阅读 · 0 评论 -
7-6 银行业务队列简单模拟(25 分)
设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。 输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为...原创 2018-09-10 15:41:23 · 1269 阅读 · 0 评论 -
6-1 求链式表的表长 (10 分)
本题要求实现一个函数,求链式表的表长。函数接口定义:int Length( List L );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数Leng...原创 2018-11-18 13:44:20 · 12902 阅读 · 3 评论