数据结构
蘼子
这个作者很懒,什么都没留下…
展开
-
7-1 交换二叉树中每个结点的左孩子和右孩子 (20 分)
题目:以二叉链表作为二叉树的存储结构,交换二叉树中每个结点的左孩子和右孩子。输入格式:输入二叉树的先序序列。提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。输出格式:输出有两行:第一行是原二叉树的中序遍历序列;第二行是交换后的二叉树的中序遍历序列。输入样例:ABC##DE#G##F###输出样例:CBEGDFAAFDGEBC代码:#include <bits/stdc++.h>using names原创 2021-05-13 16:06:37 · 2622 阅读 · 1 评论 -
6-2 顺序表统计大于指定元素值个数 (7 分)
题目本题要求实现一个函数,要求返回顺序表中大于指定元素值的个数,空表返回0。题目保证顺序表中所有元素都为整数。函数接口定义:int GetGreater(SqList L, ElemType e);函数GetGreater返回顺序表L中比e大的元素的个数,若顺序表为空,则返回0。其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList; ```### 裁判测试程序样例:```c++#原创 2021-05-08 10:05:20 · 7074 阅读 · 1 评论 -
7-4 病毒感染检测 (15 分)
题目:人的DNA和病毒DNA均表示成由一些字母组成的字符串序列。然后检测某种病毒DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了该病毒,否则没有感染。例如,假设病毒的DNA序列为baa,患者1的DNA序列为aaabbba,则感染,患者2的DNA序列为babbba,则未感染。(注意,人的DNA序列是线性的,而病毒的DNA序列是环状的)输入格式:输入第一行中给出1个整数i(1≤i≤11),表示待检测的病毒DNA和患者DNA的对数。 输入i行串序列,每行由两个字符串组成(字符串中不含不可见原创 2021-04-18 12:58:34 · 1350 阅读 · 1 评论 -
7-5 求最大元素值 (15 分)
题目:n个元素的数组的最大元素可以用递归计算出来。 定义方法:int max(int x, int y) 它返回x和y两个整数中的较大值。 试用递归编写方法:int arraymax(int[] a, int n) 它使用递归返回数组a的最大元素值。 终止条件:n==2 递归步骤:arraymax=max(max(a[0],…,a[n-2]), a[n-1])输入格式:第一行的第一个元素是输入元素个数n (1<n<=30),第二个元素之后是输入n个元素;输出格式:按格式要求输出相邻两个原创 2021-04-18 10:24:38 · 535 阅读 · 0 评论 -
7-6 求最大公约数 (15 分)
题目:使用辗转相除法和递归求两个正整数m和n的最大公约数。输入格式:输入两个正整数m,n。输出格式:按要求输出辗转相除过程及最终结果,输出结果之间空格分隔。输入样例:21 35输出样例:gcd(21,35) gcd(35,21) gcd(21,14) gcd(14,7) 7代码:#include <bits/stdc++.h>using namespace std;int gcd(int a,int b){ cout<<"gcd("<<a原创 2021-04-15 20:53:45 · 666 阅读 · 0 评论 -
7-3 字符串反正序连接 (10 分)
题目:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。输入格式:在一行输入一个长度小于20的字符串。在字符串中不要出现换行符,空格,制表符。输出格式:直接输出变化后的字符串。输入样例:abc输出样例:cbaabc代码:#include <bits/stdc++.h>using namespace std;int main(){ string str1;// str1用来逆序的 getline(cin, str1); string str2原创 2021-04-15 20:49:50 · 2703 阅读 · 0 评论 -
7-2 查找字符串 (9 分)
题目:编程实现: 输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标 (下标从0开始);否则输出"Not Found"。输出格式为"index = %d\n"输入输出示例:括号内为说明输入样例:2 (repeat=2)m (字符'm')programming (字符串"pro原创 2021-04-15 20:42:54 · 829 阅读 · 0 评论 -
7-1 找最小的字符串 (12 分)
题目:本题要求编写程序,针对输入的N个字符串,输出其中最小的字符串。输入格式:输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。输出格式:在一行中用以下格式输出最小的字符串:Min is: 最小字符串输入样例:5LiWangZhaJinXian输出样例:Min is: Jin代码:#include <bits/stdc++.h>using namespace std;int main(){ i原创 2021-04-15 15:10:48 · 1612 阅读 · 0 评论 -
7-4 银行业务队列简单模拟 (13 分)
题目:设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。输出格式:按业务处理完成的顺序原创 2021-04-11 09:46:33 · 1013 阅读 · 0 评论 -
7-3 括号匹配 (13 分)
题目:给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。输入格式:输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。输出格式:如果括号配对,输出yes,否则输出no。输入格式1:sin(10+20)输出格式1:yes输入格式2:{[}]输出格式2:no代码:#include <bits/stdc++.h>using namespace原创 2021-04-11 09:43:17 · 604 阅读 · 0 评论 -
7-1 软硬车厢交替排列 (13 分)
题目:设车辆厂生产了硬座车厢和软座车厢共n节(混合在一起),要求使用队列的基本操作,编程实现所有硬座车厢和所有软座车厢交替排列。例如硬座车厢用H来表示,软座车厢用S来表示,从键盘上输入8节车厢代号为SHHSSHSS ,输出为HSHSHSSS。若从键盘输入8节车厢代号为SHHSHHSH ,输出为HSHSHSHH。输入格式:第一行输入硬座和软座车厢共有的节数,2<=节数<=10; 第二行按节数输入车厢代号。输出格式:若车厢节数超出合法范围,输出“ERROR”,否则输出H和S车厢交替排列结果原创 2021-04-08 15:25:32 · 2044 阅读 · 0 评论 -
7-2 回文判断 (20 分)
题目:回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。输入格式:输入待判断的字符序列,按回车键结束,字符序列长度<20。输出格式:若字符序列是回文,输出“YES”;否则,输出“NO”。输入样例:abdba输出样例:YES代码:#include <iostream>using namespace std;int main(){ string a; cin&原创 2021-04-04 19:18:33 · 2987 阅读 · 0 评论 -
7-1 集合减法 (6 分)
题目:给定两个非空集合A和B,集合的元素为30000以内的正整数,编写程序求A-B。输入格式:输入为三行。第1行为两个整数n和m,分别为集合A和B包含的元素个数,1≤n, m ≤10000。第2行表示集合A,为n个空格间隔的正整数,每个正整数不超过30000。第3行表示集合B,为m个空格间隔的正整数,每个正整数不超过30000。输出格式:输出为一行整数,表示A-B,每个整数后一个空格,各元素按递增顺序输出。若A-B为空集,则输出0,0后无空格。输入样例:5 51 2 3 4 53 4 5原创 2021-03-31 19:46:30 · 5610 阅读 · 3 评论 -
6-3 顺序表的查找操作 (20 分)
题目:本题要求实现一个函数,要求从顺序表中查找指定元素,并返回第一个查找成功的元素在表中的位置序号,若查找失败,则返回0;函数接口定义:int LocateElem(SqList L,ElemType e);其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList; ```### 裁判测试程序样例:```c++#include <stdio.h>#include <s原创 2021-03-31 19:40:45 · 467 阅读 · 0 评论 -
6-1 求单链表的表长 (20 分)
题目:本题要求实现一个函数,求带头结点的单链表的表长。函数接口定义:int Length ( LinkList L );其中LinkList结构定义如下:typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;L是带头结点的单链表的头指针,函数Length返回单链表的长度。裁判测试程序样例:#include <stdio.h>#include <stdlib原创 2021-03-31 09:43:52 · 1259 阅读 · 0 评论 -
7-3 基于顺序存储结构的图书信息表的创建和输出 (18 分)
题目:定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。输入格式:输入n+1行,其中前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。输出格式:总计n+1行,第1行是所创建的图书表中的图书个数,后n行是n本图书的信息(书号、书名、价格)原创 2021-03-28 12:01:38 · 888 阅读 · 0 评论 -
7-2 两个有序链表合并(新表不含重复元素) (20 分)
题目:已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 要求S3中没有重复元素。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,要求链表中没有重复元素。数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:在这里给出一组输入。例如:1 3 3 5 8 -12 3 4 6 8 10 -1输出样例:在这里给原创 2021-03-28 11:57:50 · 1033 阅读 · 0 评论 -
7-1 两个有序链表序列的交集 (20 分)
题目:已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1输出样例:2 5代码:#include <iostream>using namespace st原创 2021-03-28 11:54:07 · 802 阅读 · 0 评论 -
7-1 单链表的创建及遍历 (15 分)
题目:读入n值及n个整数,建立单链表并遍历输出。输入格式:读入n及n个整数。输出格式:输出n个整数,以空格分隔(最后一个数的后面没有空格)。输入样例:在这里给出一组输入。例如:210 5输出样例:在这里给出相应的输出。例如:10 5代码:#include<iostream>#include<malloc.h>using namespace std;typedef struct node{ int date;//数据域 struct nod原创 2021-03-20 22:46:10 · 2444 阅读 · 2 评论 -
6-2 统计单链表元素出现次数 (10 分)
题目:本题要求实现一个函数,统计带头结点的单链表中某个元素出现的次数。函数接口定义:int GetCount ( LinkList L,ElemType e );L是带头结点的单链表的头指针,e是要统计次数的元素值。如果e在单链表中存在,函数GetCount返回其出现的次数;否则,返回0。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNod原创 2021-03-20 22:38:29 · 2900 阅读 · 1 评论 -
6-1 求单链表元素序号 (10 分)
题目本题要求实现一个函数,求带头结点的单链表中元素序号。函数接口定义:int Locate ( LinkList L, ElemType e);L是带头结点的单链表的头指针,e是要查找的元素值。如果e在单链表中存在,函数Locate返回其序号(序号从1开始);否则,返回0。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode{ E原创 2021-03-20 22:33:35 · 1632 阅读 · 0 评论 -
7-3 学生顺序表的建立 (10 分)
题目完成对一个顺序表的建立,表中的每个元素是同学们的学号、姓名和三门课程的成绩,输入5个同学的信息,然后显示在屏幕上。(要求利用顺序表的基本操作)输入格式:首先收入学生人数5,然后依次输入5个学生的学号、姓名和三门课的成绩输出格式:输入5个学生的学号、姓名和三门课的成绩输入样例:5 01 张三 89 89 89 02 李四 90 90 90 03 王五 89 89 89 04 钱六 97 97 97 05 赵倩 90 90 90输出样例:1 张三 89.0 89.0 89.0 2 李四原创 2021-03-12 21:07:31 · 1819 阅读 · 1 评论 -
7-4 递增有序顺序表的插入 (10 分)
题目:实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。输入格式:第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。输出格式:对每一组输入,在一行中输出插入X后的递增的顺序表。输入样例:在这里给出一组输入。例如:51 3 5 7 96输出样例:在这里给出相应的输出。例如:1,3,5,6,7,9,代码:#inc原创 2021-03-12 20:21:00 · 3578 阅读 · 1 评论 -
7-2 jmu-ds-顺序表区间元素删除 (20 分)
题目若一个线性表L采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)。输入格式:三行数据,第一行是顺序表的元素个数,第二行是顺序表的元素,第三行是x和y。输出格式:删除元素值在[x,y]之间的所有元素后的顺序表。输入样例:105 1 9 10 67 12 8 33 6 23 10输出样例:1 67 12 33 2代码:#include <iostream>using原创 2021-03-12 20:17:55 · 1376 阅读 · 0 评论 -
7-1 顺序表的建立及遍历 (18 分)
题目读入n值及n个整数,建立顺序表并遍历输出。输入格式:读入n及n个整数输出格式:输出n个整数,以空格分隔(最后一个数的后面没有空格)。输入样例:4-3 10 20 78输出样例:-3 10 20 78代码#include <iostream>using namespace std;int main(){ int n; cin>>n; if(n==0) return 0;// 0等于0的时候直接结束程序 else { int a[n];原创 2021-03-12 19:00:48 · 3490 阅读 · 0 评论 -
【数据结构】第一周
一、什么是数据结构1.术语:(考点:问答题的名词解释)数据:客观事物的符号表示,是所以能输入到计算机中并被计算机程序处理的符号的总称数据元素(元素、记录):数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。数据对象:性质相同的数据元素的集合,是数据的一个子集。数据结构:相互之间存在一种或多种特定关系的数据元素的集合。(重点)1.逻辑结构:特点:从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。要素:一是数据原创 2021-03-04 16:56:40 · 161 阅读 · 1 评论