数据结构和程序设计真题

合集下载

2024年广西科技大学考研真题817数据结构与程序设计

2024年广西科技大学考研真题817数据结构与程序设计

广西科技大学 2024 年硕士研究生招生考试初试专业课试卷考试科目代码:817 考试科目名称:数据结构与程序设计考试时间:180分钟(本试题共 6 页)一、判断题(每小题1分,共10分)1.C语言中的输入语句只能用scanf实现。

2.for语句只能用于循环次数已经确定的情况下。

3.逻辑运算符两侧运算对象的数据类型只能是整型或字符类型。

4.局部变量只对main函数起作用,而全局变量对所有函数起作用。

5.若有定义,int k=2, *ptr1, *ptr2; 且ptr1和ptr2均已指向k,则ptr2=k;是正确的语句。

6.已知i=0,j=1,语句if(j++||++i);执行后i、j的值分别是1、2。

7.char s[5]="ABCDE"能够正确进行字符串赋值。

8.若有定义,int *point, a=4; point =&a;,则point、&a、*&point都代表地址。

9.在C语言中,二维数组元素在内存中的存放顺序是按行顺序存放。

10.不能用"r"方式打开一个并不存在的文本文件。

二、单项选择题(每小题1.5分,共30分)1.若C语言中一个int型数据在内存中占用两个字节,则int型数据的取值范围为____。

A.-128~127 B.-32768~32767C.0~65536 D.0~21474836472.有以下程序片段int k=5;while(k=1) k--;执行此程序片段,则描述正确的是____。

A.while循环执行4次B.循环体执行一次C.循环体一次也不执行D.死循环3.有如下函数调用语句fuc( rec1, rec2+rec3, (rec4, rec5) );该函数调用语句中,含有的实参个数是____。

A.3 B.4 C.5 D.有语法错误4.程序的三种基本结构是____。

A.顺序结构,循环结构,递归结构B.顺序结构,循环结构,选择结构C.选择结构,循环结构,递归结构D.顺序结构,选择结构,递归结构5.C语言中主函数的个数是____。

数据结构和C++程序设计_题库

数据结构和C++程序设计_题库

《数据结构》Part1一.选择1. 组成数据的基本单位是()A)数据项B)数据类型C)数据元素D)数据变量2.算法分析的目的是()A)找出数据结构的合理性B)研究算法的输入/输出关系C)分析算法的效率以求改进D)分析算法的易读性3.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()A)O(1) B)0(n) C)O(n^2) D)O(nlog2n)4.若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址是()A)112 B)144 C)148 D)4125.下面关于线性表的叙述中,错误的是()A)顺序表使用一维数组实现的线性表B)顺序表必须占用一片连续的存储单元.C)顺序表的空间利用率高于链表D)在单链表中,每个结点只有一个链域. 6.在需要经常查找结点的前驱与后继的情况下,使用()比较合适A)单链表B)双链表C)顺序表D)循环链表7.队列通常采用的两种存储结构是()A)顺序存储结构和链式存储结构B)散列方式和索引方式C)链表存储结构和线性存储结构D)线性存储结构和非线性存储结构8.在一个单链表中,若删除p所指结点的后继结点,则执行()A)p->next=p->next->next;B)p=p->next;p->nex=p->next->next;C)p->next=p->next;D)p=p->next->next;9.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间A)单链表B)仅有头指针的单循环链表C)双链表D)仅有尾指针的单循环链表10.按二叉树的定义,具有三个结点的二元树共有()种形态。

A)3 B)4 C)5 D)611.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序()A)发生改变B)不发生改变C)不能确定D)以上都不对12.深度为5的二叉树至多有()个结点A)16 B)32 C)31 D)1013.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,那么度为0的结点数为()个。

程序设计与数据结构练习题 附答案

程序设计与数据结构练习题 附答案

一、单项选择题1.有下列程序段落:int i,a[5];for(i=0;i<5;i++)scanf(“%d”,&a[i]);若要使数组元素的值分别为1,2,3,4,5,应从键盘输入(B)。

A.1,2,3,4,5↙B.1 2 3 4 5↙C.12345↙D.1;2;3;4;5↙2.数组名作为函数参数进行传递时,形参获得的是(D)。

A.该数组第一个元素的值B.该数组所有元素的值C.该数组所有元素的地址D.该数组的首地址3.设有如下宏定义:#define A 3+2#define B A*A则表达式“B*B”的值为( A )。

A.23B.5 C.25D.6254.在下列说明中,结构类型变量x 所占用内存字节数为(D)。

struct exp{ int i;float j;double k;}x;A.8个B.7个C.14个D.随计算机而定5.设有定义:int k=3,*p=&k; 则表达式*p的值是(D)。

A.1 B.0 C.2 D.36.下列程序的输出结果为(A)。

main(){ int i=3,b;b=(i--)+(i--);printf(“%d”,b);}A.6 B.2 C.3 D.47.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是(D)。

A.c=b=a B. (a=c)||(b=c) C. a=c=b D. (a=c)&&(b=c)8.下列叙述不正确的是( A )。

A.函数定义可以嵌套B.宏定义可以嵌套C.函数调用可以嵌套D.循环结构可以嵌套9.设char *p=“abcde”,则printf(“%s”, p ) 的输出结果为( D )。

A.c B.cde C.b D.abcde10.p1,p2 为指向浮点的指针变量,下列运算没有意义的是(D)。

A.*p1-*p2 B.p1++ C.*p1+*p2 D.p1+p211.设有int i=010,j=10; 则printf( “%d,%d\n”,++i,j--);的输出是(B)。

上海海事大学2018年《828数据结构及程序设计》考研专业课真题试卷

上海海事大学2018年《828数据结构及程序设计》考研专业课真题试卷

2018年上海海事大学攻读硕士学位研究生入学考试
试题
(重要提示:答案必须做在答题纸上,做在试题上不给分)考试科目代码828 考试科目名称数据结构及程序设计一.判断题(本题10分,每小题1分)
1.线性的数据结构可以顺序存储,也可以链接存储。

非线性的数据结构只能链接存储。

2.单链表从任何一个结点出发,都能访问到所有结点。

3.单链表形式的队列,头指针F指向队列的第一个结点,尾指针R指向队列的最后一个结点。

4.若在采用链式存储结构线性表中,元素按值有序,则该线性表可以采用折半查找法查找元素。

5.一个栈的输入序列为1, 2, 3, …, n,其输出序列的第二个元素为n的输出序列的个数有n-1种。

6.设串S的长度为n,则S的子串个数为n(n+1)/2。

7.若一个广义表的表头为空表,则此广义表亦为空表。

8.二叉树中除叶节点外,任一节点x,其左子树根节点的值小于该节点(x)的值,其右子树根节点的值大于该节点(x)的值,则此二叉树一定是二叉排序树。

9.网络的最小代价生成树是唯一的。

10.(99, 86, 46, 70, 34, 39, 45, 58, 66, 10 )是堆。

二.填空题(本题20分,每空2分)
1.一个栈的输入序列是:1、2、3,则不可能的栈输出序列是⑴。

- 2018试题1/6 -。

北航数据结构与程序设计真题2013年北航991真题及答案

北航数据结构与程序设计真题2013年北航991真题及答案

2013年''数据结构与C程序设计〃(代码991)试题一、单项选择题(本题共20分,每小题各2分)1.对于长度为n的线性表,建立其对应的収链表的时间复朵度为()。

A.0(1): B・ O(log2n):・ O(n): D・ O(n2)n2.一般情况下,在一个双向链表中插入一个新的链结点,()。

A.需耍修改4个抬针域内的指针:B・需要修改3个指针域内的抬针:C.需要修改2个抬针域内的抬针:D.只需要修改1个指针域内的抬针。

3.假设用单个字母表示中缀表达式中的一个运算数(或称运算对彖).并利用堆栈产生中缀表达式对应的后缀表达式。

对于中缀表达式A+B^C/D-E),十从左至右扫描到运算数E时,堆栈中的运算符依次是()。

(注:不包含表达式的分界符)A.+*/-:B. +*(/-: C・ +*-:・ +*(-o4.若某二叉排序树的前序遍历序列为50,20,40,30,80,60,70,则后序遍历序列为()。

A. 30,40,20,50,70,60,80:B. 30,40,20,70,60,80,50:C. 70,60,80,50,30,40,20:D. 70,60,80,30,40,20,50.5.分别以6, 3, 8, 12, 5, 7对应叶结点的权值构造的哈夫曼(Huffman)树的深度为()。

A. 6: B・ 5: C・ 4: D・ 3。

&下列关于图的叙述中,错误的是()0A.根据图的定义,图中至少有一个顶点:B.根据图的定义.图中至少有一个顶点和一条边(弧):C.具有n个顶点的无向图最多有n&#61620;(n-l)/2条边:D.具有n个顶点的有向图最多有n&#61620;(n-l)条边(弧)。

7.若在有向图G的拓扑序列中.顶点W在顶点vj之前,则下列4种情形中不可能岀现的是()。

A.G 中有弧vvi,vj>:B.G 中没有3ft<vi r vj>;c. G中有一条从顶点W到顶点vj的路径:D・G中有一条从顶点vj到顶点vi的路径。

程序设计与数据结构与算法专升本试题精选与解析

程序设计与数据结构与算法专升本试题精选与解析

程序设计与数据结构与算法专升本试题精选与解析一、选择题1. 下列不能直接在代码中定义的数据结构是:A. 数组B. 栈C. 队列D. 字符串答案:D解析:字符串是一种抽象数据类型,不能直接在代码中定义,而需要通过现有的数据结构(如数组)来表示和操作。

2. 在二叉搜索树中,某节点的左子树的所有节点值均小于该节点的值,右子树的所有节点值均大于该节点的值。

下列哪个操作时间复杂度最坏情况下为O(n)?A. 查找指定节点B. 插入新节点C. 删除指定节点D. 中序遍历答案:C解析:删除指定节点时,需要先找到指定节点,时间复杂度为O(logn),然后需要调整二叉搜索树的结构,最坏情况下需要遍历整棵树,时间复杂度为O(n)。

3. 下列排序算法中,不稳定的是:A. 冒泡排序B. 插入排序C. 快速排序D. 归并排序答案:C解析:快速排序在每次分割时选择一个基准元素,并将小于基准元素的元素放在左侧,大于基准元素的元素放在右侧,这可能改变相等元素的相对顺序,因此是不稳定的排序算法。

二、填空题1. 以下数据结构中,能够快速查找最大值和最小值的是_______________。

答案:平衡二叉搜索树解析:平衡二叉搜索树(如AVL树、红黑树)可以保持树的平衡性,从而能够在O(logn)的时间内查找最大值和最小值。

2. 在树的遍历中,先序遍历的访问顺序是_______________。

答案:根节点 -> 左子树 -> 右子树解析:先序遍历先访问根节点,然后先序遍历左子树,最后先序遍历右子树。

三、简答题1. 请简述动态规划算法的基本思想和步骤。

答案:动态规划算法的基本思想是将原问题分解为相互重叠的子问题,先求解子问题,再逐步解决更大的问题,最终得到原问题的解。

动态规划算法的基本步骤为:定义状态,构建状态转移方程,计算最优解。

2. 请简述堆排序算法的基本思想和步骤。

答案:堆排序算法的基本思想是通过构建最大堆或最小堆来实现排序。

上海海事大学828数据结构及程序设计2017年考研初试真题

上海海事大学828数据结构及程序设计2017年考研初试真题

2017年上海海事大学攻读硕士学位研究生入学考试试题(重要提示:答案必须做在答题纸上,做在试题上不给分)
考试科目代码828 考试科目名称数据结构及程序设计
一.判断题(本题10分,每小题1分)
1.链式栈与顺序栈相比,一个明显的优点是通常不会出现栈满的情况。

2.能够在链式存储的有序表上进行折半查找,其时间复杂度与在顺序存储的有序表上相同。

3.使用三元组表示稀疏矩阵中的非零元素能节省存储空间。

4.任何一棵二叉树的叶结点在先序、中序、后序三种遍历中的相对次序是相同的。

5.数据结构的抽象操作的定义与具体实现有关。

6.对一个有向图进行拓扑排序,一定可以将图的所有顶点按其关键码大小排列到一个拓扑有序的序列中。

7.如果无向图中每个顶点的度都大于等于2,则该图中必有回路。

8.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。

9.若让元素1、2、3依次进栈,则出栈次序1、3、2是不可能出现的情况。

10.对平衡二叉树进行中序遍历,可得到结点的有序排列。

二.填空题(本题20分,每空2分)
1.下面程序的功能是实现冒泡排序算法,请在下划线处填上正确的语句。

void bubble(int r[n]) {
for ( i=1; i<=n-1; i++) {
- 2017试题1/6 -。

数据结构与C语言程序设计试题及答案

数据结构与C语言程序设计试题及答案
5.已知模式匹配的KMP算法中模式串t=’adabbadada’,其next函数的值为0112112343。
6.在置换-选择排序中,假设工作区的容量为w,若不计输入、输出的时间,则对n个记录的文件而言,生成所有初始归并段所需时间为O(n log w)。
三.简答题(6’5)
1.有n个不同的英文单词,它们的长度相等,均为m,若n>>50,m<5,试问采用什么排序方法时间复杂度最佳?为什么?
采用基数排序方法最佳。
因单词长度相等,而只有26个字母组成,符合基数排序的条件。
因m<<n,故时间复杂性由O(m(n+rm))变成O(n)。
2.对于一个栈,给出输入序列A,B,C,试给出全部可能的输出序列。若输入序列的长度为n,则可能的输出序列有多少?
ABC,ACB,BAC,BCA,CBA
C2nn/(n+1)
()10、任何有向图的顶点都可以按拓扑序排序。
二.填空题(2’6)
1.假设用于通信的电文由8个字母组成,其频率分别为0.07,0.19,0.02,0.06, 0.32,0.03,0.21,0.10,为这8个字母设计哈夫曼编码,其中编码长度最大的字母的编码是5位。
2.已知二叉树按中序遍历所得到的结点序列为DCBGEAHFIJK,按后序遍历所得到的结点序列为DCEGBFHKJIA,按先序遍历所得到的结点序列为ABCDGEIHFJK。
O(n log n)
四.程序设计题(38’)
1.假设有两个集合A和B,均以元素值递增有序排列的带头结点的单链表作为存储结构。请编写算法求C=AB,要求C按元素值递增有序排列,并要求利用原表(即表A和表B)的结点空间存放表C。(12’)
void Join(LinkList &la , LinkList &lb , LinkList &lc)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
obj1.f();
A obj2(15);
obj2.f();
obj1.f();
return 0;
}
}
a=10
b=10
a=15
b=25
a=10
b=25
6.#include<iostream>
Using namespace std
ClassA{
Private:Leabharlann int a;public:
A(){ cout<<”A`s default constactour called.\n”;};
return 0;
}
2.#include<iostream>
Using namespace std
main(){
int a=1,b=2,c=3,d=4,y=10;
switch(y){
case1:a++;break;
default:d=1;
case2:b++;break;//d=1,b=3
case4:c++;break;
A(int i) {a= i; cout<<”A`s constractour called.\n”};
Void print(){ cout<<a<<’’,’’;}
~A() { cout<<”A`s destractor called.\n”}
Int Geta{ return a;}
}
Class B{
}
Cout <<a<<b<<c<<d<<endl;//1331
Return 0;
}
3.#include<iostream>
Using namespace std
Main(){
Int i=0,sum=0;
for(;;){
i+=2;
if(i>10){ cout <<”sum=”<<sum; break;}
Class A{
private:
int a;
static int b;
public:
A(int i){a=i;b+=i;}
Void f();
void A::f(){
cout <<”a=”<<a<<endl;
cout <<”b=”<<b<<endl;
}
Private A::b=0;
Main(){
A obj1(10);//
}
}
if(i==8) continue;
sum+=I;//0+2+4+6+10=22
}
Return 0;
}
4.#include<iostream>
Using namespace std;
Int &f1(int &a);
Int f2 (int b );
Main(){
Int x=10;
Inty=f1(x);
Void print();
Private:
Int b;
A aa;
}
Void B::print(){
A::print();
Cout <<b<<aa.Geta()<<endl;
}
Main(){
B bb[2] = {B(10,15,20),B(1,2,3)};
For(int i=0;i<2;i++){
bb[i].print();
Public:
A
B(){ cout<<”B`s default constactour called.\n”};
B(int i, int j, int k ){ A(i),aa(j)cout <<”B`s constractor called.\n”;}
~B(){ cout <<”B’s destractor called.\n”}
Int z=f2(x);
cout <<x<<endl//20
cout <<y<<endl;//20
cout <<z<<endl;//40
return 0;
}
Int &f1(int &a){
a+=a;
}
Int f2(int b){
b+=b;
}
}
#include<iostream>
Using namespace std
程序设计部分
读程序,写结果
1.#include<iostream>
Using namespace std
Main(){
int i=2,j=4,m,n;
m = ++i + j++;//i=3 j=5 m=3+4=7
n = (++i)+(++j)+m;//i=4,j=6,n=4+6+7=17
cout <<i<<j<<m<<n;//46717
相关文档
最新文档