数据结构期中练习及参考答案
数据结构期中试题及参考答案
}LNode, *LinkList;
阅读算法 f31,并回答问题;
(1)设节点结构为id score next
,成绩链表 A 和 B 如图所示,画
出执行算法 f31(A,B)后节点 A 所指的链表;
A
1 70
2 40
3 90
4 48
5 56
B
2 38
4 65
题 31 图
(2)减速算法 f31 的功能。 Void f31(LinkList A, LinkList B) { LinkList p,q; p = A->next; q = B->next; while (p && q) { if(p->id < q->id) p = p ->next; else if(p->if > q-> id) q =q –>next; else { if (p->score < 60)
I + = j + lt ;
}
}while (i+lt <= ls && j>=0);
Return k;
}
4
五、算法设计题(本题 14 分) 34.假设线性表采用顺序存储结构,其类型定义如下:
#define ListSize 100 typedef struct{
int data[ListSize]; int length; }SeqList, *Table; 编写算法,将顺序表 L 中所有值为奇数的元素调整到表的前端。
(1)设 n=10,元素
p=8
2
存储在 sa[p],写出下标 p 的值;
题 3-1 图
数据结构期中练习(2022)
一、选择题(每题2分,共30分)1.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为()。
(A) front->next=s;front=s;(B) s->next=rear;rear=s;(C) rear->next=s;rear=s;(D) s->next=front;front=s;2.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是()。
(A) head==0(B) head->next==0(C) head->next==head(D) head!=03.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是___。
(A) 3 1 2(B) 2 3 1(C) 1 2 3(D) 3 2 14.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为()。
(A) O(log2n)(B) O(1)(C) O(n2)(D) O(n)5.设循环队列的元素存放在一维数组A[0..40]中,队列非空时,front指示队首元素,rear指示队尾元素的后一个位置。
如果队列中元素的个数为15,front的值为33,则rear应指向的位置是()。
A. A[6]B. A[16]C. A[7]D. A[17]6.广义表A = (a,(b),(),(c,d,e,f))的长度为()。
A.3B.4C.5D.67.从广义表LS=((a, b), c, d)中分解出原子b的运算是()。
A. head(tail(LS))B. tail(head(LS))C. head(tail(head(LS)))D. tail(tail(head(LS)))8.二维数组A[12][18]采用以列为主优先存储方法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[10][8]的地址为()。
数据结构期中考试题
一、单项选择题(每小题3分,共30分)1、线性结构是数据元素之间存在的一种_______。
A、一对多关系B、多对多关系C、多对一关系D、一对一关系2、以下数据结构中,哪一个不是线性结构()A.生成树 B. 顺序栈 C. 单链表 D. 循环队列3、设n是偶数,则运行下列程序段的时间复杂度为()。
x=100;for(p=2;p<=n;p++)for(q=2*i;q<=n;q++)x=(x+1)*3;A.O(1) B.O(n) C.O(n2) D.O(lbn)4、若频繁地对线性表进行插入和删除操作,该线性表应该采用——存储结构。
A、散列B、顺序C、链式D、索引5、在非空双向循环链表中由q所指的链结点后面插入一个由p所指的链结点的动作依次为:p->llink=Q;p->rlink=q->rlink;q->rlink=p;_______.(空白处为一条赋值语句) A、q->llink=p B、q->rlink->llink=pC、p->rlink->llink=pD、p->llink->llink=p6、设循环队列的结构是:const int Maxsize=100;typedef int Data Type;typedef struct {Data Type data[Maxsize];Int front, rear;} Queue;若有一个Queue类型的队列Q,试问判断队列满的条件应是下列哪一个语句()A 、Q.front= = Q.rear; B、 Q.front - Q.rear= = Maxsize;C、Q.front + Q.rear= = Maxsize;D、 Q.front= = (Q.rear+1)% Maxsize;7、已知L是一个不带表头的单链表, 在表首插入结点*p的操作是()。
A. p = L; p->next = L;B. p->next = L; p = L;C. p->next = L; L = p;D. L = p; p->next= L;8、下面关于串的叙述中,哪一个是不正确的?( )A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储9、若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( )。
数据结构期中考试试题及答案
一、单项选择题(本题总分 20分,每题 2分)在每小题列出的四个选项中只有 一个选项是符合题目要求的,请将正确选项前的字母。
1.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( D ) 。
A.顺序表 B.链表 C.索引表 D.散列表采用排除法,顺序表存储位置表示数据元素的顺序关系,跟关键字无法;链表的地址是动态分配的;索引表是 按数据元素的关键字排序所得,它的数据元素是没有规律的2.在长度为 n 的顺序表的第 i(1≤i ≤n+1)个位置上插入一个元素,元素的移动次数为( A ) 。
A.n -i+1B.n -iC.iD.i -1代入计算法,我们知道在 i=n+1 时不需要移动元素3.若一棵二叉树的先序遍历序列为 a,b,c ,则由 abc 三个结点构成的二叉树个数为( B ) 。
A.4B.5C.6D.74.三维数组 A[4][5][6]按行优先存储方法存储在内存中,若每个元素占 2 个存储单元,且数组中第一个元素的存 储地址为 130,则元素 A[3][4][5]的存储地址为(B A.370B .368C .366) 。
D.372Loc(3,4,5)=loc(0,0,0)+(3*5*6+4*6+5)*2=130+119*2=368;5.高度为 h 的二叉树(仅含根结点的二叉树高度为 1)的结点最少是多少( D) 。
A. h+1B. 2hC. 2h -1D. h二叉树性质 26. 将两个各有 n 个元素的有序表归并成一个有序表,其最多的比较次数是( A. nB.n+1 C. 2n-1D. n-17. 已知一算术表达式的中缀形式为 A +B *C -D/E ,后缀形式为 ABC *+DE/-,其前缀形式为( C) 。
A )。
A. -+A*BC/DE C. -+*ABC/DEB. –A+B*CD/E D. –A+B*C/DE根据中缀和后缀表达式可画出表达树如下:- + /A* D EBC故前缀表达式为:-+A*BC/DE数据结构期中考试8.下面图示的顺序存储结构表示的二叉树是( A )。
数据结构期中考试试题及答案
2014-2015学年第二学期《数据结构与算法》期中考试学号:姓名:一、写语句1.设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后继的C语言语句。
2.设单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,请写出在p结点之前插入s结点的操作3. 设双向循环链表中结点的数据域、前驱和后继指针域分别为data,pre和next,试写出在指针p 所指结点之前插入s结点的C语言描述语句。
4. 一线性表存储在带头结点的双向循环链表中,L为头指针。
如下算法:(1)说明该算法的功能。
(2)在空缺处填写相应的语句。
void unknown (BNODETP *L){ …p=L->next; q=p->next; r=q->next;while (q!=L){ while (p!=L) && (p->data>q->data) p=p->prior;q->prior->next=r;(1) ______;q->next=p->next;q->prior=p;(2) ______;(3) ______;q=r;p=q->prior;(4) ______;} }二、写算法1.设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法:(要求用最少的时间和最小的空间)(1)确定在序列中比正整数x大的数有几个(相同的数只计算一次,如序列{20,20,17,16,15,15,11,10,8,7,7,5,4}中比10大的数有5个);(2) 在单链表将比正整数x小的数按递减次序排列;(3) 将正整数(比)x大的偶数从单链表中删除。
2. 设键盘输入n个英语单词,输入格式为n, w1, w2, …,wn,其中n表示随后输入英语单词个数,试编一程序,建立一个单向链表,实现:(1)如果单词重复出现,则只在链表上保留一个。
数据结构与算法期中考试卷(含答案)
数据结构与算法期中考试卷(含答案)⽟林师范学院期中课程考试试卷(2010——2011学年度第⼀学期)命题教师:刘恒命题教师所在系:数计系课程名称:数据结构与算法考试专业:信计考试年级:09级⼀、单项选择题(每题2分,共30分,把正确答案填⼊表格中) 1、在数据结构中,从逻辑上可以把数据结构分成( C )。
A 、动态结构和静态结构B 、紧凑结构和⾮紧凑结构C 、线性结构和⾮线性结构D 、逻辑结构和存储结构 2、结构中的数据元素之间存在⼀个对多个的关系,称为(B )结构。
A 、线性 B 、树形 C 、图状 D 、⽹状 3、以下关于线性表的说法不正确的是(C )。
A 、线性表中的数据元素可以是数字、字符、记录等不同类型。
B 、线性表中包含的数据元素个数不是任意的。
C 、线性表中的每个结点都有且只有⼀个直接前驱和直接后继。
D 、存在这样的线性表:表中各结点都没有直接前驱和直接后继。
4、关于单链表的说法,请选出不正确的⼀项( C)。
A 、逻辑相邻、物理不⼀定相邻B 、不能随机存取C 、插⼊与删除需移动⼤量元素D 、表容量易于扩充 5、关于顺序表的说法,请选出不正确的⼀项(D )。
A 、逻辑相邻、物理相邻 B 、可实现随机存取 C 、存储空间使⽤紧凑 D 、表容量易于扩充6、设N 为正整数,试确定下列程序段中前置以记号@语句的频度为(A )。
x=91;y=100;while(y>0){@if(x>100){x-=10;y--;} else x++; } A 、1100 B 、 9100 C 、110 D 、 9107、在顺序表中删除⼀个元素,平均需要移动( C)元素,设表长为n 。
A、n/2-1 B 、n/2+1C 、n/2D 、(n+1)/28、对单链表执⾏下列程序段,请选出正确的⼀项( A)。
T=P;While(T->next!=NULL ){T —>data=T —>data*2;T=T —>next;} A 、R->data=4 B 、R->data=8C 、H->data=4D 、Q->data=79、若⼀个栈的输⼊序列是1,2,3,┅,n ,输出序列的第⼀个元素是n,则第k 个输出元素是( C)。
数据结构期中考试试卷参考答案
数据结构期中考试试卷参考答案1徐州师范大学期中试卷课程名称:数据结构与算法一、单项选择1. B2. A3. B4. C 5. A 6. D 7. C 8. C 9. B 10. D 11. A 12. B 13. C 14. D 15. A 16. C 17. A 18. A 19. D 20. B二、名词解释1. 数据:是所有能被输入到计算机中,且能被计算机处理的符号的集合。
它是计算机操作的对象的总称,也是计算机处理的信息的某种特定的符号表示形式。
2. 算法:通常把具体存储结构上的操作实现步骤或过程称为算法。
3. 递归:在定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归4. 时间复杂度:通常把算法中包含基本运算次数的多少称为算法的时间复杂度,也就是说,一个算法的时间复杂度是指该算法的基本运算次数。
5. 数组:数组是n(n >1)个相同类型数据元素a1,a2,…,an 构成的有限序列,且该有限序列存储在一块地址连续的内存单元中。
三、填空题(每题1分,共10分)1.有穷性、确定性、可行性、输入、输出2. n/2 插入或删除位置3. __O(1) __。
4. 以行序为主序和以列序为主序两种方式。
5. 数据数据元素。
6.元素之间逻辑关系的信息7. 长度各个对应位置上的字符 8.一定不一定。
9.头指针头结点的指针.直接前驱结点指针。
10.数据元素及其关系四、简答题1.答案:(1)结点存储密度。
顺序:结点中只有自身信息域,没有链接信息域,故存储密度大;链式:结点中除自身信息外,还有表示连接信息的指针域,存储密度小。
(2)随机存取。
顺序:可随机访问,直接存取第i 个结点信息;链式:不能随机访问.(3)插入和删除。
顺序:插入、删除,会引起大量结点的移动。
链式:插入、删除灵活方便,不必移动结点,只要改变结点中的指针值即可。
(4)预先分配存储单元.顺序:按最大预分配,存储空间利用率不高;链式:不需要预分配空间,所以存储空间利用率高。
数据结构期中考试试题答案c语言版本
R @ - * ( +
S 1 0 3 2 1 +
R@ - *
S 1 0 3 2 1 + * - 3 1
R@ + ( -
S 1 0 3 2 1 + * - 3 1 - 2
R@ + /
S 1 0 3 2 1 + * - 3 1 - 2 / +
R
S 1 0 3 2 1 + * - 3 1 - 2 / + @ \0
3.在带附加表头的循环双向链表中, 表头附加结点 的 左 指针域指向最后一个结点,最后一个结点的 右 指针域指向 表头附加 结点。
4.在以HL为表头指针的带附加结点的单链表和循环单链表中,链表为空的条件分别为
HL->next==NULL 和 HL==HL->next 。
5.在由数组a中元素结点构成的单链表中,删除下标为i的结点后,需要把该结点插入到空闲表的表头,具体操作为 a[i].next=a[1].next 、 a[1].next=i 。
8.一个广义表中的元素分为 单 元素和 表 元素两类。
9.广义表A=((a,(b,(),c),((d),e)))的长度为 1 ,深度为 4 。
10.向一个顺序栈插入一个元素时,首先应 top++ ,然后再将待插入元素 放入栈顶位置 。
11.对于队列,应在 队尾 进行插入,在 队首 进行删除。
12.中缀表达式2+7/(4-1)所对应的后缀表达式为 2 7 4 1 - / + @ 。
数据结构期中考试试题答案
一、 单选题(每小题2分,共8分)
1.在一个长度为n的线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为 C 。
数据结构期中试卷及答案
一、选择题(每小题2分,共30分)1. 数据结构是( D )。
A.一种数据类型 B.数据的存储结构C.一组性质相同的数据元素的集合D.相互之间存在一种或多种特定关系的数据元素的集合2.以下与数据的存储结构无关的术语是( D )。
A.链队列 B. 链表 C. 顺序表 D. 栈3.以下数据结构中,( A )是非线性数据结构A.树 B.字符串 C.队 D.栈4.一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是(B)。
A.98 B.100 C.102 D.1065.在线性表的下列运算中,不改变数据元素之间结构关系的运算是(D)。
A.插入 B.删除 C.排序 D.查找6.线性表采用链式存储时,其地址(D )。
A.必须是连续的 B.一定是不连续的C.部分地址必须连续 D.连续与否均可以7.线性表是(A )。
A.一个有限序列,可以为空 B.一个有限序列,不可以为空C.一个无限序列,可以为空 D.一个无限序列,不可以为空8.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为(B)。
A.3,2,6,1,4,5 B.3,4,2,1,6,5C.1,2,5,3,4,6 D.5,6,4,2,3,19. 若一个栈的输人序列是1,2,3,…,n,输出序列的第一个元素是n,则第k个输出元素是(C )。
A.k B.n-k-1 C.n-k+1 D.不确定10.对于队列操作数据的原则是( A )。
A. 先进先出B. 后进先出C. 先进后出D. 不分顺序11. 栈和队列的共同点是( C )。
A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点12.在一个链队列中,假定front和rear分别为头指针和尾指针,删除一个结点的操作是( A )。
A.front=front->next B.rear=rear->nextC.rear->next=front D.front->next=rear13. 空串与空格串( B )。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构期中测试题答案
《数据结构》期中测试班级:姓名:学号:一、填空题:1、在数据结构中,从逻辑上可以把数据结构分为集合、线性结构、树形结构和图状结构,其中树形结构和图状结构合称为非线性结构。
数据结构被形式地定义为二元组(D,S),其中D是数据元素的有限集合,S是D上关系的有限集合。
2、算法的五个重要特性是有穷性、确定性、可行性、输入和输出。
3、一个顺序表第一个元素的存储地址是100,每个元素的长度为3,则第6个元素的地址是115。
在顺序表中插入或删除一个元素,需要平均移动(n+1)/2个元素,具体移动的元素个数与插入或删除元素的位置有关。
顺序表中逻辑上相邻的元素的物理位置相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的指针域指示。
在单链表中设置头结点的作用是使第一个结点与其他结点的操作统一。
4、从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较(n+1)/2个结点。
在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是O(n)。
给定有n个元素的线性表,建立一个有序单链表的时间复杂度是O(n2)。
5、已知L是无表头结点的非空单链表,且指针p所指结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
在p所指结点后插入s所指结点:4、1。
在p所指结点前插入s所指结点:7、11、8、4、1。
在表首插入s所指结点:5、12。
在表尾插入s所指结点:11、9、1、6。
1)p->next=s;2)p->next=p->next->next;3)p->next=s->next;4)s->next=p->next;5)s->next=L;6)s->next=NULL;7)q=p;8)while(p->next!=q) p=p->next;9)while(p->next!=NULL) p=p->next;10)p=q;11)p=L;12)L=s;13)L=p;6、已知指针p所指结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。
《数据结构》期中试题(有答案)
福建师范大学数学与计算机科学学院
2009--2010学年度上学期08电信
《数据结构》期中试题
试卷类别:闭卷考试时间:90分钟
倚窗远眺,目光目光尽处必有一座山,那影影绰绰的黛绿色的影,是春天的颜色。
周遭流岚升腾,没露出那真实的面孔。
面对那流转的薄雾,我会幻想,那里有一个世外桃源。
在天阶夜色凉如水的夏夜,我会静静地,静静地,等待一场流星雨的来临…
许下一个愿望,不乞求去实现,至少,曾经,有那么一刻,我那还未枯萎的,青春的,诗意的心,在我最美的年华里,同星空做了一次灵魂的交流…
秋日里,阳光并不刺眼,天空是一碧如洗的蓝,点缀着飘逸的流云。
偶尔,一片飞舞的落叶,会飘到我的窗前。
斑驳的印迹里,携刻着深秋的颜色。
在一个落雪的晨,这纷纷扬扬的雪,飘落着一如千年前的洁白。
窗外,是未被污染的银白色世界。
我会去迎接,这人间的圣洁。
在这流转的岁月里,有着流转的四季,还有一颗流转的心,亘古不变的心。
计05期中数据结构试题及答案
计05期中数据结构试题及答案数据结构期中试题一. 单项选择题(每项选择2分,共48分)1.在数据结构中,从逻辑上可以把数据结构分成___C____。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构2.线性表是 A 。
(A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空; (C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。
3.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的 B 个元素。
(A) n/2 (B) n+1/2 (C) n -1/2 (D) n 4.用链表表示线性表的优点是 C 。
(A)便于随机存取(B)花费的存储空间较顺序存储少 (C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用 C 存储方式最节省运算时间。
(A)单链表 (B)双链表 (C)带尾指针的单循环链表 (D)双循环链表6线性表的顺序存储结构是一种_A____的存储结构,线性表的链式存储结构是一种_____的存储结构。
A.随机存取 B.顺序存取 C.索引存取 D.散列存取7、若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用B 存储方式最节省运算时间。
(A) 单链表 (B) 顺序表 (C) 双链表 (D) 单循环链表8.算法分析的目的是___C___,算法分析的两个主要方面是__A____。
①A.找出数据结构的合理性B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进D.分析算法的易懂性和文档性②A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性9、栈的特点是① B ,栈和队列都是 C ② 。
①、 A、先进先出 B、后进先出②、 A、顺序存储的线性结构C、操作受限的线性结构C、进优于出D、出优于进B、链式存储的线性结构 D、操作受限的非线性结构10、若进队列的序列为1,2,3,4,则 D 是一个出队序列。
数据结构期中考试答案解析
数据结构期中试卷及答案解析考试说明考试说明:考察前五章小题,难度接近真题。
满分100分,共20道选择题,每题5分。
请在60分钟内完成。
C T(n)=n3+5000nD T(n)=2nlogn-1000n参考答案:C本题考察时间复杂度,多个项相加时,只保留最高阶项由于巴啦啦能量——“常<对<幂<指<阶”,因此T(n)=logn+5000n=O(n)T(n)=n2-8000n=O(n2)T(n)=n3+5000n=O(n3)T(n)=2nlogn-1000n=O(nlogn)所以O(n3)复杂度最大,选C。
3.下列叙述中正确的是()①线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比②线性表在链式存储时,查找第 i 个元素的时间同 i 的值无关③线性表在顺序存储时,查找第 i 个元素的时间同 i 的值成正比A. 仅①B. 仅②C. 仅③D. ①②③参考答案:A线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比。
线性表在顺序存储时,查找第 i 个元素的时间同 i 的值无关4.若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。
A. 单链表B. 双向链表C. 单循环链表D. 顺序表参考答案:D注意到,题目要求存取第i个元素及其前驱和后继,ABC三个选项找到第i个元素的时间复杂度均为O(n),而D选项对于这3个位置的存取的时间复杂度均为O(1),故选D。
5.静态链表中next域表示的是()A 下一个元素的地址B 下一个元素的值C 当前元素的值D 下一个元素在数组中的位置参考答案:D静态链表一般保存在数组中,它和链表最大的区别是静态链表占用一段固定的区间,所以next域只需要表示下一个元素在数组中的下标即可而不是表示下一个元素的地址,选D。
6.对于不带头结点的链栈L(next域表示该结点下一个元素),top指针指向栈顶元素(栈顶在链头方向),则x结点进栈操作为A top->next=x;top=x;B top=x;top-next=x;C top=x;x->next=top;D x->next=top;top=x;参考答案:D本题考察链栈的操作x入栈之后x下一个元素为原来的top,所以先把x->next=top,然后更新top,栈顶元素指向x。
数据结构_期中试卷(含答案)
一、选择题(每小题 1分,共10分)1、队列是插入和删除受限的线性表,其删除操作是在线性表的(1)进行。
A.表头 B.表尾 C.任意位置 D.指定位置2、下述哪一条是顺序存储结构的优点(2)。
A.存储密度大 B.插入运算方便C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示3、设有一个栈,元素的进栈次序为A, B, C, D, E,下列哪个是不可能的出栈序列(3)。
A.A, B, C, D, E B.B, C, D, E, AC.E, A, B, C, D D.E, D, C, B, A4、若二叉树的根结点所在的层次为第1层,则该二叉树的第k层上至多有(4)个结点。
2k B.2k C.2k-1 D.2k+1A. 15、设单链表中指针p指向结点m,若要删除m的后继结点(假设该后继结点存在),则需修改指针的操作为(5)。
A.p->next=p->next->next; B.p=p->next;C.p=p->next->next; D.p->next=p;6、下面程序段的时间复杂度为(6)。
for(int i=0; i<m; i++)for(int j=0; j<n; j++) a[i][j] = i*j;A.O(m2) B.O(n2) C.O(m+n) D. O(m*n)7、非空的循环单链表head的尾结点指针p满足(7)。
A.p==NULL B.p== head C.p->next==head D.p->next==NULL8、已知二维数组A[0..9,0..9]中,元素a[2][0]的地址为560,每个元素占4个字节,则元素a[1][0]的地址为(8)。
A. 518B. 520C. 522D. 5249、在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为(9)。
A.rear%n= = front B.(front+l)%n= = rearC.rear%n -1= = front D.(rear+l)%n= = front10、假设在一棵二叉树中,度为2的结点数为15,度为1的结点数为10个,则该二叉树的分支总数为(10)个。
数据结构期中题库及答案
一、判断题:1、线性表的逻辑顺序与物理顺序总是一致的;2、线性表的顺序存储表示优于链式存储表示;3、线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续;4、二维数组是其数组元素为线性表的线性表;5、每种数据结构都应具备三种基本运算:插入、删除和搜索;6、数据结构概念包括数据之间的逻辑结构,数据在计算机中的存储方式和数据的运算三个方面;7、线性表中的每个结点最多只有一个前驱和一个后继;8、线性的数据结构可以顺序存储,也可以链接存储;非线性的数据结构只能链接存储;9、栈和队列逻辑上都是线性表;10、单链表从任何一个结点出发,都能访问到所有结点11、删除二叉排序树中一个结点,再重新插入上去,一定能得到原来的二叉排序树;12、快速排序是排序算法中最快的一种;13、多维数组是向量的推广;14、一般树和二叉树的结点数目都可以为0;15、直接选择排序是一种不稳定的排序方法;16、98、对一个堆按层次遍历,不一定能得到一个有序序列;17、在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk 个,则有n0=nk+1;18、折半搜索只适用与有序表,包括有序的顺序表和有序的链表;19、堆栈在数据中的存储原则是先进先出;20、队列在数据中的存储原则是后进先出;21、用相邻矩阵表示图所用的存储空间大小与图的边数成正比;22、哈夫曼树一定是满二叉树;23、程序是用计算机语言表述的算法;24、线性表的顺序存储结构是通过数据元素的存储地址直接反映数据元素的逻辑关系;25、用一组地址连续的存储单元存放的元素一定构成线性表;26、堆栈、队列和数组的逻辑结构都是线性表结构;27、给定一组权值,可以唯一构造出一棵哈夫曼树;28、只有在初始数据为逆序时,冒泡排序所执行的比较次数最多;29、希尔排序在较率上较直接接入排序有较大的改进;但是不稳定的;30、在平均情况下,快速排序法最快,堆积排序法最节省空间;31、快速排序法是一种稳定性排序法;32、算法一定要有输入和输出;33、算法分析的目的旨在分析算法的效率以求改进算法;34、非空线性表中任意一个数据元素都有且仅有一个直接后继元素;35、数据的存储结构不仅有顺序存储结构和链式存储结构,还有索引结构与散列结构;36、若频繁地对线性表进行插入和删除操作,该线性表采用顺序存储结构更合适;37、若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144,则第1个数据元素的存储地址是101;38、若长度为n的线性表采用顺序存储结构,删除表的第i个元素之前需要移动表中n-i+1个元素;39、符号p->next出现在表达式中表示p所指的那个结点的内容;40、要将指针p移到它所指的结点的下一个结点是执行语句p←p->next;41、若某堆栈的输入序列为1,2,3,4,则4,3,1,2不可能是堆栈的输出序列之一;42、线性链表中各个链结点之间的地址不一定要连续;43、程序就是算法,但算法不一定是程序;44、线性表只能采用顺序存储结构或者链式存储结构;45、线性表的链式存储结构是通过指针来间接反映数据元素之间逻辑关系的;46、除插入和删除操作外,数组的主要操作还有存取、修改、检索和排序等;47、稀疏矩阵中0元素的分布有规律,因此可以采用三元组方法进行压缩存储;48、不管堆栈采用何种存储结构,只要堆栈不空,可以任意删除一个元素;49、确定串T在串S中首次出现的位置的操作称为串的模式匹配;50、深度为h的非空二叉树的第i层最多有2i-1 个结点;51、满二叉树也是完全二叉树;52、已知一棵二叉树的前序序列和后序序列可以唯一地构造出该二叉树;53、非空二叉排序树的任意一棵子树也是二叉排序树;54、对一棵二叉排序树进行前序遍历一定可以得到一个按值有序的序列;55、一个广义表的深度是指该广义表展开后所含括号的层数;56、散列表的查找效率主要取决于所选择的散列函数与处理冲突的方法;57、序列初始为逆序时,冒泡排序法所进行的元素之间的比较次数最多;58、已知指针P指向键表L中的某结点,执行语句P=P-〉next不会删除该链表中的结点;59、在链队列中,即使不设置尾指针也能进行入队操作;60、如果一个串中的所有字符均在另一串中出现,则说前者是后者的子串;61、设与一棵树T所对应的二叉树为BT,则与T中的叶子结点所对应的BT中的结点也一定是叶子结点;62、若图G的最小生成树不唯一,则G的边数一定多于n-1,并且权值最小的边有多条其中n 为G的顶点数;63、给出不同的输入序列建造二叉排序树,一定得到不同的二叉排序树;64、由于希尔排序的最后一趟与直接插入排序过程相同,因此前者一定比后者花费的时间多;65、程序越短,程序运行的时间就越少;66、采用循环链表作为存储结构的队列就是循环队列;67、堆栈是一种插入和删除操作在表的一端进行的线性表;68、一个任意串是其自身的子串;69、哈夫曼树一定是完全二叉树;70、带权连通图中某一顶点到图中另一定点的最短路径不一定唯一;71、折半查找方法可以用于按值有序的线性链表的查找;72、稀疏矩阵压缩存储后,必会失效掉随机存取功能;73、由一棵二叉树的前序序列和后序序列可以唯一确定它;74、在n个结点的元向图中,若边数在于n-1,则该图必是连通图;75、在完全二叉树中,若某结点元左孩子,则它必是叶结点;76、若一个有向图的邻接矩阵中,对角线以下元素均为0,则该图的拓扑有序序列必定存在;77、树的带权路径长度最小的二叉树中必定没有度为1的结点;78、二叉树可以用0≤度≤2的有序树来表示;79、一组权值,可以唯一构造出一棵哈夫曼树;80、101,88,46,70,34,39,45,58,66,10是堆;81、将一棵树转换成二叉树后,根结点没有左子树;82、用树的前序遍历和中序遍历可以导出树的后序遍历;83、在非空线性链表中由p所指的结点后面插入一个由q所指的结点的过程是依次执行语句:q->next=p->next;p->next=q;84、非空双向循环链表中由q所指的结点后面插入一个由p指的结点的动作依次为:p->prior=q, p->next=q->next,q->next=p,q->prior->next←p;85、删除非空链式存储结构的堆栈设栈顶指针为top的一个元素的过程是依次执行:p=top,top= p->next,free p;86、哈希的查找无需进行关键字的比较;87、一个好的哈希函数应使函数值均匀的分布在存储空间的有效地址范围内,以尽可能减少冲突;88、排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素或记录的任意序列,重新排列成一个按关键字有序的序列;89、队列是一种可以在表头和表尾都能进行插入和删除操作的线性表;90、在索引顺序表上实现分块查找,在等概率查找情况下,其平均查找长度不与表的个数有关,而与每一块中的元素个数有关;91、对于有向图,顶点的度分为入度和出度,入度是以该顶点为终点的入边数目;出度是以该顶点为起点的出边数目,该顶点的度等于其入度和出度之和;92、无向图的邻接矩阵是对称的有向图的邻接矩阵是不对称的;93、具有n个顶点的连通图的生成树具有n-1条边二、填空题:1、数据结构课程讨论的主要内容是数据的逻辑结构、存储结构和______________;2、数据结构算法中,通常用时间复杂度和__________________两种方法衡量其效率;3、一个算法一该具有______,______,____,______和____这五种特性;4、若频繁地对线性表进行插入与删除操作,该线性表应采用____________存储结构;5、在非空线性表中除第一个元素外,集合中每个数据元素只有一个_______;除最后一个元素之外,集合中每个数据元素均只有一个_________;6、线性表中的每个结点最多有________前驱和____________后继;7、______链表从任何一个结点出发,都能访问到所有结点;8、链式存储结构中的结点包含____________域,_______________域;9、在双向链表中,每个结点含有两个指针域,一个指向______结点,另一个指向________结点;10、某带头结点的单链表的头指针head,判定该单链表非空的条件______________;11、在双向链表中,每个结点含有两个指针域,一个指向_______结点,另一个指向_____结点;12、已知指针p指向单链表中某个结点,则语句p->next=p->next->next的作用__删除p 的后继结点_;13、已知在结点个数大于1的单链表中,指针p指向某个结点,则下列程序段结束时,指针q 指向p的_____________结点;q=p;whileq->next=pq=q->next;14、若要在单链表结点P后插入一结点S,执行的语句_______________;15、线性表的链式存储结构地址空间可以_________,而向量存储必须是地址空间___________;16、栈结构允许进行删除操作的一端为_____________;17、在栈的顺序实现中,栈顶指针top,栈为空条件______________;18、对于单链表形式的队列,其空队列的F指针和R指针都等于__________________;19、若数组s0..n-1为两个栈s1和s2的共用存储空间,仅当s0..n-1全满时,各栈才不能进行栈操作,则为这两个栈分配空间的最佳方案是:s1和s2的栈顶指针的初值分别为_________;20、允许在线性表的一端插入,另一端进行删除操作的线性表称为_______;插入的一端为______,删除的一端为______;21、设数组Am为循环队列Q的存储空间,font为头指针,rear为尾指针,判定Q为空队列的条件____________________;22、对于顺序存储的队列,存储空间大小为n,头指针为F,尾指针为R;若在逻辑上看一个环,则队列中元素的个数为___________;23、已知循环队列的存储空间为数组data21,且头指针和尾指针分别为8和3,则该队列的当前长度__________;24、一个串的任意个连续的字符组成的子序列称为该串的________,包含该子串的串称为________;25、求串T在主串S中首次出现的位置的操作是________________;26、在初始为空的队列中插入元素A,B,C,D以后,紧接着作了两次删除操作,此时的队尾元素是__________;27、在长度为n的循环队列中,删除其节点为x的时间复杂度为_______________;28、已知广义表L为空,其深度为___________;29、已知一顺序存储的线性表,每个结点占用k个单元,若第一个结点的地址为DA1,则第i 个结点的地址为______________;30、设一行优先顺序存储的数组A56,A00的地址为1100,且每个元素占2个存储单元,则A23的地址为_____________;31、设有二维数组A919,其每个元素占两个字节,第一个元素的存储地址为100,若按行优先顺序存储,则元素A6,6的存储地址为______________,按列优顺序存储,元素A6,6的存储地址为______________;32、在进行直接插入排序时, 其数据比较次数与数据的初始排列________关;而在进行直接选择排序时,其数据比较次数与数据的初始排列__________关;33、假设以行为优先存储的三维数组A567,A000的地址为1100,每个元素占两个存储单元,则A432的地址为_______;34、设二维数组Amn按列优先存储,每个元素占1个存储单元,元素A00的存储地址locA00,则A ij的存储地址locA ij=____________________;35、稀疏矩阵一般采用__________方法进行压缩存储;36、稀疏矩阵可用_________进行压缩存储,存储时需存储非零元的________、________、________;37、若矩阵中所有非零元素都集中在以主对角线为中心的带状区域中,区域外的值全为0,则称为__________;38、若一个n 阶矩阵A中的元素满足:A ij=Aji 0<=I ,j<=n-1则称A为____________矩阵;若主对角线上方或下方的所有元素均为零时,称该矩阵为______________;39、对于上三角形和下三角形矩阵,分别以按行存储和按列存储原则进行压缩存储到数组Mk中,若矩阵中非0元素为A ij,则k对应为________和__________;40、设有一上三角形矩阵A55按行压缩存储到数组B中,B0的地址为100,每个元素占2个单元,则A32地址为____________;41、广义表A,a,b,d,e,i,j,k,则广义表的长度为___________,深度为___________;42、已知广义表A=a,b,c,d,e,f,则运算headhead tailA=___ ________;43、已知广义表ls =a,b,c,d,e,运用head和tail函数取出ls中的原子b的运算是_____;44、在树结构里,有且仅有一个结点没有前驱,称为根;非根结点有且仅有一个___________,且存在一条从根到该结点的_______________;45、度数为0的结点,即没有子树的结点叫作__________结点或_________结点;同一个结点的儿子结点之间互称为___________结点;46、假定一棵树的广义表为ABe,CFh,i,j,g,D,则该树的度为___________,树的深度为_________,终端结点为______,单分支结点为,双分支结点个数为 _______,三分支结点为_______,C结点的双亲结点是______,孩子结点是______;48、完全二叉树、满二叉树、线索二叉树和二叉排序树这四个名词术语中,与数据的存储结构有关系的是_____________;47、有三个结点的二叉树,最多有________种形状;48、每一趟排序时从排好序的元素中挑出一个值最小的元素与这些未排小序的元素的第一个元素交换位置,这种排序方法成为_____________排序法;49、高度为k的二叉树具有的结点数目,最少为_____,最多为_____;50、对任何一棵二叉树,若n0,n1,n2分别是度为0,1,2的结点的个数,则n0=_______;51、在含100个结点的完全二叉树,叶子结点的个数为_______;52、将一个数据元素或记录的任意序列,重新排列成一个按关键字有序的序列叫_____;53、若一棵满二叉树含有121个结点,则该树的深度为_________;54、一个具有767个结点的完全二叉树,其叶子结点个数为________;55、深度为90的满二叉树,第11层有________个结点;56、有100个结点的完全二叉树,深度为________;57、设一棵二叉树中度为2的结点10个,则该树的叶子个数为________;58、若待散列的序列为18,25,63,50,42,32,9,散列函数为Hkey=key MOD 9,与18发生冲突的元素有_____________个;59、含有3个2度结点和4个叶结点的二叉树可含__________个1度结点;60、一棵具有5层满二叉树中节点总数为___________;61、一棵含有16个结点的完全二叉树,对他按层编号,对于编号为7的结点,他的双亲结点及左右结点编号为______、______、_______;62、深度为k设根的层数为1的完全二叉树至少有_______个结点, 至多有_______个结点;63、若要对某二叉排序树进行遍历,保证输出所有结点的值序列按增序排列,应对该二叉排序树采用________遍历法;64、在序列2,5,8,11,15,16,22,24,27,35,50中采用折半查找二分查找方法查找元素24,需要进行______________次元素之间的比较;65、设有10个值,构成哈夫曼树,则该哈夫曼树共有______个结点;66、从树中一个结点到另一个结点之间的分支构成这两个结点之间的____________;67、关键字自身作为哈希函数,即Hk=k,也可自身加上一个常数作为哈希函数,即Hk=k+C这种构造哈希函数的方式叫____________;68、对于一个图G,若边集合EG为无向边的集合,则称该图为____________;69、对于一个图G,若边集合EG为有向边的集合,则称该图为____________;70、对于有向图,顶点的度分为入度和出度,以该顶点为终点的边数目叫________;以该顶点为起点的边数目叫_________;71、一个无向图采用邻接矩阵存储方法,其邻接矩阵一定是一个______________;72、有一个n个顶点的有向完全图的弧数_____________;73、在无向图中,若从顶点A到顶点B存在_________,则称A与B之间是连通的;74、在一个无向图中,所有顶点的度数之和等于所有边数的___________倍;75、一个连通图的生成树是该图的____________连通子图;若这个连通图有n个顶点, 则它的生成树有__________条边;76、无向图的邻接矩阵是一个_____________矩阵;77、如果从一无向图的任意顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是_____ _______;78、若采用邻接表的存储结构,则图的广度优先搜索类似于二叉树的____________遍历;79、若图的邻接矩阵是对称矩阵,则该图一定是________________;80、从如图所示的临接矩阵可以看出,该图共有______个顶点;如果是有向图,该图共有______条弧;如果是无向图,则共有________条边;81、如果从一个顶点出发又回到该顶点,则此路径叫做___________;82、一个具有个n顶点的无向图中,要连通全部顶点至少需要________条边;83、给定序列{100, 86, 48, 73, 35, 39, 42, 57, 66, 21}, 按堆结构的定义, 则它一定_________堆;84、从未排序序列中选择一个元素,该元素将当前参加排序的那些元素分成前后两个部分,前一部分中所有元素都小于等于所选元素,后一部分中所有元素都大于或等于所选元素,而此时所选元素处在排序的最终位置;这种排序法称为_____________排序法;85、折半搜索只适合用于___________________;86、结点关键字转换为该结点存储单元地址的函数H称为_____________或叫__________;87、在索引查找中,首先查找________,然后查找相应的_________,整个索引查找的平均查找长度等于查找索引表的平均长度与查找相应子表的平均查找长度的_______;三、选择题:1.数据结构通常是研究数据的及它们之间的联系;A存储和逻辑结构B存储和抽象C理想和抽象D理想与逻辑2.在堆栈中存取数据的原则是 ;A先进先出B后进先出C先进后出D随意进出3.将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子的编号为______;4.对于如图所示二叉树采用中根遍历,正确的遍历序列应为5.设有100个元素,用折半查找法进行查找时,最大比较次数是_____ ;6.快速排序在_____情况下最易发挥其长处;A.被排序数据中含有多个相同排序码B.被排序数据已基本有序C.被排序数据完全无序D.被排序数据中最大值和最小值相差悬殊7.由两个栈共享一个向量空间的好处是______;A减少存取时间,降低下溢发生的机率B节省存储空间,降低上溢发生的机率C减少存取时间,降低上溢发生的机率D节省存储空间,降低下溢发生的机率8.某二叉树的前序和后序序列正好相反,则该二叉树一定是_____的二叉树A空或者只有一个结点B高度等于其结点数C任一结点无左孩子D任一结点无右孩子9.设散列表长m=14,散列函数HK=K%11,已知表中已有4个结点:r15=4; r38=5; r61=6;r84=7,其他地址为空,如用二次探测再散列处理冲突,关键字为49的结点地址是________;A8 B3C5 D910.在含有n个项点有e条边的无向图的邻接矩阵中,零元素的个数为________;11.图的深度优先遍历类似于二叉树的_______;A.先序遍历B.中序遍历C.后序遍历D.层次遍历12.设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______;A. O1B. Olog2nC. OnD. On213.堆的形状是一棵_______;A.二叉排序树B.满二叉树C.完全二叉树D.平衡二叉树14.一个无向连连通图的生成树是含有该连通图的全部项点的_______;A.极小连通子图B.极小子图C.极大连通子图D.极大子图15.一个序列中有10000个元素,若只想得到其中前10个最小元素,最好采用_______方法A.快速排序B.堆排序C.插入排序D.二路归并排序16.设单链表中结点的结构为typedef struct node { ElemType data;struct node Link;} ListNode;已知指针p所指结点不是尾结点,若在p之后插入结点s,则应执行下列哪一个操作______;A. s->link = p; p->link = s;B. s->link = p->link; p->link = s;C. s->link = p->link; p = s;D. p->link = s; s->link = p;17.设单链表中结点的结构为typedef struct node{ data; node Link; ListNode;非空的循环单链表first的尾结点由p所指向满足:______A. p->link == NULL;B. p == NULL;C. p->link == first;D. p == first;18.计算机识别、存储和加工处理的对象被统称为_________A.数据 B.数据元素C.数据结构D.数据类型19.在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是________A.O1 nnlogn n220.队和栈的主要区别是________A.逻辑结构不同B.存储结构不同C.所包含的运算个数不同D.限定插入和删除的位置不同21.链栈与顺序栈相比,比较明显的优点是________A.插入操作更加方便B.删除操作更加方便C.不会出现下溢的情况D.不会出现上溢的情况22.在目标串T0…n-1=”xwxxyxy”中,对模式串p0…m-1=”xy”进行子串定位操作的结果_______23.已知广义表的表头为A,表尾为B,C,则此广义表为________A.A,B,CB.A,B,CC.A,B,CD. A,B,C24.二维数组A按行顺序存储,其中每个元素占1个存储单元;若A11的存储地址为420,A33的存储地址为446,则A55的存储地址为_______25.二叉树中第5层上的结点个数最多为________26.如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是_______A.有向完全图B.连通图C.强连通图D.有向无环图27.对n个关键字的序列进行快速排序,平均情况下的空间复杂度为_______ 1 lognn nlogn28.对于哈希函数Hkey=key%13,被称为同义词的关键字是_______A.35和41 和39和44 和5129. 由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________;A、 24B、 48C、 72D、 5330.对包含N个元素的散列表进行检索,平均检索长度 ________A、为 olog2NB、为oNC、不直接依赖于ND、上述三者都不是31. 向堆中插入一个元素的时间复杂度为________;A、 Olog2nB、 OnC、 O1D、 Onlog2n32.下面关于图的存储的叙述中,哪一个是正确的; ________A.用相邻矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关B.用相邻矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关C.用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关D.用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关33.输入序列为A,B,C,D,不可能得到的输出序列是______.A. A,B,C,DB.D,C,B,AC.A, C,D,BD.C,A,B,D34.在长度为n的顺序存储的线性表中,删除第i个元素1≤i≤n时,需要从前向后依次前移____个元素;A、n-iB、n-i+1C、n-i-1D、i35.设一个广义表中结点的个数为n,则求广义表深度算法的时间复杂度为____;A、O1B、OnC、On2D、Olog 2 n36.假定一个顺序队列的队首和队尾指针分别为f和r,则判断队空的条件为 ____;A、f+1==rB、r+1==fC、f==0D、f==r37.从堆中删除一个元素的时间复杂以为____;A、O1B、Olog 2 nC、OnD、Onlog 2 n38.若需要利用形参直接访问实参,则应把形参变量说明为____参数;A.指针B.引用C.值D.变量39.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行____;A. q一>next=p一>next;p一>next=q;C. q一>next=p一>next;p一>next=q;B. p一>next=q一>next;q=p; D. p一>next=q一>next;q一>next=p;40.在一个顺序队列中,队首指针指向队首元素的____位置;A.前一个B.后一个C.当前D.最后一个41.向二叉搜索树中插入一个元素时,其时间复杂度大致力____;A O1B O1og2nC OnD Onlog2n42.算法指的是________A.计算机程序B.解决问题的计算方法C.排序算法D.解决问题的有限运算序列43.线性表采用链式存储时,结点的存储地址________A.必须是不连续的B.连续与否均可C.必须是连续的D.和头结点的存储地址相连续44.将长充为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为________ 1 nm m+n45.由两个栈共享一个向量空间的好处是:________A.减少存取时间,降低下溢发生的机率B.节省存储空间,降低上溢发生的机率C.减少存取时间,降低上溢发生的机率D.节省存储空间,降低下溢发生的机率46.设数组DAtAm作为循环队列SQ的存储空间,front为队头指针,reAr为队尾指针,则执行出队操作后其头指针front值为________A. front=front+1B. front=front+1%m-1C. front=front-1%mD. front=front+1%m47.如下陈述中正确的是________A. 串是一种特殊的线性表B. 串的长度必须大于零C. 串中元素只能是字母D. 空串就是空白串48.若目标串的长充为n,模式串的长度为n/3,则执行模式匹配算法时,在最坏情况下的时间复杂度是________1 nn2 n349.一个非空广义表的表头________A.不可能是子表B.只能是子表C.只能是原子D.可以是子表或原子50. 从堆中删除一个元素的时间复杂度为________;A、 O1B、 OnC、 Olog2nD、 Onlog2n51.一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为________52. 从二叉搜索树中查找一个元素时,其时间复杂度大致为________;A、 OnB、 O1C、 Olog2nD、 On253. 根据n个元素建立一棵二叉搜索树时,其时间复杂度大致为________;A、 OnB、 Olog2nC、 On2D、 Onlog2n54.用某种排序方法对关键字序列25,84,21,47,15,27,68,35,20进行排序时,序列的变化情况是如下________:20,15,21,25,47,27,68,35,8415,20,21,25,35,27,47,68,8415,20,21,25,27,35,47,68,84则所采用的排序方法是________A.选择排序B.希尔排序C.归并排序D.快速排序55.适于对动态查找表进行高效率查找的组织结构是________A.有序表B.分块有序表C.二叉排序树D.线性链表56. 若需要利用形参直接访问实参,则应把形参变量说明为________参数;A 指针B 引用C 值D 常量57.链式栈与顺序栈相比,一个比较明显的优点是________;A. 插入操作更加方便B. 通常不会出现栈满的情况C. 不会出现栈空的情况D. 删除操作更加方便58.设单链表中结点的结构为data, link;已知指针q所指结点是指针p所指结点的直接前驱,若在q与p之间插入结点s,则应执行下列哪一个操作________。
数据结构_期中试卷(含答案)
一、选择题(每小题 1分,共10分)1、队列是插入和删除受限的线性表,其删除操作是在线性表的(1)进行。
A.表头B.表尾C.任意位置D.指定位置2、下述哪一条是顺序存储结构的优点?(2)。
A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示3、设有一个栈,元素的进栈次序为A, B, C, D, E,下列哪个是不可能的出栈序列(3)。
A.A, B, C, D, E B.B, C, D, E, AC.E, A, B, C, D D.E, D, C, B, A4、若二叉树的根结点所在的层次为第1层,则该二叉树的第k层上至多有(4)个结点。
2k B.2k C.2k-1 D.2k+1A. 15、设单链表中指针p指向结点m,若要删除m的后继结点(假设该后继结点存在),则需修改指针的操作为(5)。
A.p->next=p->next->next; B.p=p->next;C.p=p->next->next; D.p->next=p;6、下面程序段的时间复杂度为(6)。
for(int i=0; i<m; i++)for(int j=0; j<n; j++) a[i][j] = i*j;A.O(m2) B.O(n2) C.O(m+n) D.O(m*n)7、非空的循环单链表head的尾结点指针p满足(7)。
A.p==NULL B.p== head C.p->next==head D.p->next==NULL8、已知二维数组A[0..9,0..9]中,元素a[2][0]的地址为560,每个元素占4个字节,则元素a[1][0]的地址为(8)。
A. 518B. 520C. 522D. 5249、在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为(9)。
A.rear%n= = front B.(front+l)%n= = rearC.rear%n -1= = front D.(rear+l)%n= = front10、假设在一棵二叉树中,度为2的结点数为15,度为1的结点数为10个,则该二叉树的分支总数为(10)个。
数据结构期中试卷参考答案
1.评价算法优劣的基本标准有哪些?请就每一项给出简短说明。
答:(1)正确性:对输入的合法数据(包括边界情况),都能有正确的输出结果。
(2)健壮性:对输入的非法数据,算法能适当地做出反应或进行处理,而不是产生莫名其妙的输出结果。
(3)可读性:有助于人对算法的理解,易于发现错误,便于调试和修改。
(4)效率与低存储量需求:效率和存储量需求分别指算法执行所需要的时间和最大存储空间。
2.已知一棵二叉树的中序和后序序列分别为GLDHBEIACJFK和LGHDIEBJKFCA,(1)画出这棵二叉树,对这棵二叉树的构造过程给出一个简短说明;(2)将这棵二叉树理解为“孩子-兄弟法”表示的森林,画出这个森林。
答:(1)构造出的二叉树如图1所示:图1构造过程说明:①后序序列的最后一个元素为A, 得知二叉树的根为A;②在中序序列中找到树根A, A左侧的部分GLDHBEI为左子树的中序序列,A右侧的部分CJFK为右子树的中序序列。
并得知左子树7个节点,右子树4个节点;③后序序列的前7个节点LGHDIEB是左子树的后序序列,后续序列的后4个节点JKFC是右子树的后序序列;④根据中序GLDHBEI后序LGHDIEB求左子树,根据中序CJFK后序JKFC 求右子树。
依此类推,便可唯一构造出此二叉树。
(2)“孩子-兄弟表示法”,又称二叉链表表示法,链表中结点的两个链域分别指向该结点的第一个孩子和下一个兄弟结点,一棵二叉树与森林一一对应,该森林如图2所示:图23.字符A,B,C,D,E,F,G的使用频度分别是15,8,10,21,6,19,3,写出A,B,C,D,E,F,G的Huffman编码,列出编码过程,解释Huffman 有什么优点。
解:编码过程如下:各字符编码为字符 A B C D E F G编码011 110 010 00 1111 10 1110优点:Huffman编码为前缀码,它根据结点出现的频度由低到高编码,则可以使频度较高的结点有尽可能短的编码,从而使整个发送文件的总编码长度尽可能短。
数据结构期中测试
数据结构期中测试1.定义了一个结构体类型的普通变量,要使用其成员,则应该在变量和成员之间加()。
A:.(正确答案)B:>C:<D:&2.在定义结构体时会有一对{},在{}后不能省略的符号是下列哪一项()。
A:;(分号)(正确答案)B:,(逗号)C:""(双引号)D::(冒号)3.下列选项中关于什么是结构体描述正确的是()。
A:结构体是高级语言中的一种构造类型(正确答案)B:结构体是汇编语言中的一种指针类型C:结构体是高级语言中的一种指针类型D:结构体是C语言中的基本类型4.struct的作用是()。
A:定义整型变量B:定义结构体类型(正确答案)C:定义浮点型变量D:定义字符型变量5.定义了一个学生结构体,其中一个成员变量是年龄,应该使用()类型。
A:int(正确答案)B:floatC:小数D:浮点数6.p是一个结构体指针变量,它有一个成员变量叫sex,则使用格式正确的是()。
A:p->sex(正确答案)B:p%sexC:p#sexD:p&sex7.下列选项中是用来定义结构体的关键字是()。
A:struct(正确答案)B:functionC:staticD:stack8.数据分为原子类型(基本类型)和结构类型(构造类型),结构体属于()。
A:原子类型(基本类型)B:结构类型(构造类型)(正确答案)C:无类型D:以上都不对9.结构体定义会有一对{},在{}后不能省略的是()。
A:;(正确答案)B:.C:/D:>10.product属于结构体类型,要定义这种类型的变量pro定义正确的是()。
A:structproductpro;(正确答案)B:proproduct;C:structpro;D:以上都不对11.数据结构里,树形关系是()。
A:一对一关系B:一对多关系(正确答案)C:多对多关系D:没有关系12.数据结构里,线性结构是()。
A:一对一关系(正确答案)B:一对多关系C:多对多关系D:没有关系13.数据结构里,顺序存储是指()。
数据结构期中测试——算法填空(答案)
1、两个集合A和B的并集,集合A、B分别用线性表LA、LB表示。
要求:A=A∪B。
注:∪——并集,属于A或者属于B)思路:1.从线性表LB中依次取得每个数据元素; GetElem(LB, i)→e 2.依值在线性表LA中进行查访; LocateElem(LA, e, equal( ))3. 若不存在,则插入之。
ListInsert(LA, n+1, e)void union(List &LA, List LB) {// 将所有在线性表Lb中但不在La中的数据元素插入到La中LA_len = ListLength(LA);LB_len =ListLength(LB); // 求线性表的长度for ( i = 1; i <= LB_len; i++ ) {GetElem(LB, i, e); // 取Lb中第i个数据元素赋给eif( !LocateElem(LA, e, equal( ) )ListInsert(LA, ++LA_len, e);// La中不存在和e 相同的数据元素,则插入之}} // union2、线性表的初始化Status InitList_Sq(SqList &L)、{ //构造一个空的线性表L.elem = (ElemType* )malloc(LIST_INIT_SIZE*sizeof(ElemType));if ( !L.elem )exit(OVERFLOW); //存储分配失败L.length = 0; //空表长度为0L.listsize = LIST_INIT_SIZE; //初始存储容量return OK;}//InitList_Sq3、从线性表中查找具有给定值的第一个元素:int LocateElem_Sq( SqList L,ElemType e,Status (*compare) (ElemType, ElemType) ){// 在顺序线性表L中查找第1个值与e满足compare()的//元素的位序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构中期练习一、判断题请在题后括号内打上“T”(正确)或“F”(错误)1.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
(F)2. 在对带头结点的链队列作出队操作时,头指针的值不会改变。
(T)头结点3.用S表示入栈操作,X表示出栈操作,若元素入栈顺序为1,2,3,4, 为了得到1,3,4,2出栈顺序相应的S和X操作序列为SXSSXSXX。
(T)4. 在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。
(T)5.顺序存储的线性表可以按序号随机存取。
( T )链式表是按顺序连续存储6.带头结点的单链表队列,头指针F指向队列的头结点,尾指针R指向队列的最后一个结点(F)空队列7.空串是由空白字符组成的串。
(F)8.字符串比较‘ABCDEFG’>‘ABF’的结果为(F)9.顺序栈插入、删除操作都是在同一端的进行,该端称为堆底。
(F)10.给定循环链表中任一元素的地址均可得到其直接前驱的地址(T)二、单选题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的( A)以及它们之间的关系和运算等的学科。
A. 数据元素B. 计算方法C. 逻辑存储D. 数据映象2. 设单链表中指针p指向结点m ,若要删除m之后的结点(若存在),则需修改指针的操作为(A)。
A.q=p->next;p->next=p->next->next;free(q);B. p=p->next;C. p=p->next->next;D. p->next=p;3. 若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(D)存储方式最节省运算时间。
A. 单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表(经过最少的结点)4.下面程序段的时间复杂度是( B )。
for (i=1;i<=n;i++)for (j=i;j<=n;j++)s+=B[i][j];A. nB. n2C. 1D. n5.带头结点的单链表head为空的判定条件是 ( B )。
A. head = = NULL;B. head->next = = NULL;C. head->next = = head;D. head! = NULL;6.在循环双链表的p所指结点之后插入s所指结点的操作是 ( D )。
A. p->right=s; s->left=p; p->right->left=s; s=->right=p->right;B. p->right=s; p->right->left=s; s->left=p; s->right=p->right;C. s->left=p; s->right= p->right; p->right=s; p->right->left=s;D. s->left=p; s->right=p->right; p->right->left=s; p->right=s;7.假设顺序栈的定义为:typedef struct {selemtype *base; /* 栈底指针*/selemtype *top; /* 栈顶指针*/int stacksize; /* 当前已分配的存储空间,以元素为单位*/ }sqstack;变量st为sqstack型,则栈st为满的判断条件为(C)。
A. st.base == NULL B. st.top == st.stacksize C. st.top-st.base>=st.stacksize D. st.top == st.base8.判断一个循环队列QU ( m为最大队列长度(以元素为单位),front和rear 分别为队列的队头指针和队尾指针 ) 为空队列的条件是( A )。
A.QU->front == QU->rear B.QU->front != QU-> rearC.QU->front == (QU->rear+1) % m0 D.QU->front != (QU->rear+1) % m三、算法设计题1.假设称正读和反读都相同的字符序列为“回文” (即回文是指一个字符序列以中间字符为基准两边字符完全相同),例如,‘abba’和‘abcba’是回文,‘ababab’则不是回文。
试编写一个判断读入的一个以‘@’为结束符的字符序列是否“回文”的算法。
[解题思路:判断回文算法Palindrome_Test()的思想是:把字符串中的字符逐个分别存入队列和堆栈,然后逐个出队列和退栈并比较出队列的数据元素和退栈的数据元素是否相等,若全部相等则该字符序列是回文,否则就不是回文。
]实现本题功能的函数如下(类C编写):int Palindrome_Test() //判别输入的字符串是否是回文序列,是则返回1,否则返回0{Initstack(S); InitQueue(Q);while ( (c =getchar()) !=‘@’){Push(S,c); EnQueue(Q,c); //同时使用栈和队列两种结构}while(!StackEmpty(S)){Pop(S,a); DeQueue(Q,b);if(a!=b) return ERROR;}return OK;}//Palindrome_Test2.已知Q是一个非空队列,S是一个空栈。
仅用队列和栈的基本操作函数和少量工作变量,编写一个算法,将队列Q中的所有元素逆置。
栈的基本操作函数有:clearstack(&s); 置空栈push(&s,e); 新元素e进栈pop(s,&e):出栈,返回栈顶值给estackEmpty(s): 判栈空否队列的基本操作函数有enqueue(&q,e); 元素e进队dequeue(&q,&e):出队列,返回队头值给equeueempty(q): 判队列空否aaa(q,s){clearstack(s)while(!queueempty(q)){dequeue(q,e);删除队尾元素,返回e。
push(s,e);}while(!stackempty(s)){pop(s,e);enqueue(q,e);插入队头元素e}}设在树中,结点x是结点y的双亲时,用(x,y)来表示树变。
已知一棵树边的集合为:{(i,m),(i,n),(b,e),(e,i),(b,d),(a,b),(g,j),(g,k),(c,g),(c,f),(h,l),(c,h),(a,c)}用树形表示法画出此树,并回答下列问题:(1)哪个是根结点?2)哪些是叶结点?3)哪个是g的双亲?4)哪些是g的祖先?5)哪些是g的孩子?6)哪些是e的子孙?7)哪些是e的兄弟?哪些是f的兄弟?8)结点b和n的层次各是多少?9)树的深度是多少?10)以结点c为根的子树的深度是多少?11)树的度数是多少?答案:(1)a是根结点。
2)d,m,n,j,k,l,f是叶结点。
3)c是g的双亲。
4)a,c是g的祖先。
5)g的孩子是j,k.。
6)e的子孙是i,m,n.。
7)e的兄弟是d,f的兄弟是g,h。
8)b在第二层,b 在第五层。
9)树的深度为5。
10)以C为根的子树的深度为3。
11)树的度数为3。
二、分别写出上图所示二叉树的的先序、中序、后序、层序遍历的序列。
先序:ABECDFGHIJ中序:EBCDAFHIGJ后序:EDCBIHJGFA层序:ABFECGDHJI2.对于如图所示的森林,要求:(1)将其转换为相应的二叉树;(2)写出该森林的先序遍历序列和中序遍历序列。
(1)该森林所对应的二叉树如下图所示:(2)该森林的先序遍历序列为:ABDEFCGHIJKL ,中序遍历序列为:DEFBCAHIJGLK 。
1、已知一棵二叉树的前序遍历的结果序列是ABECDFGHIJ, 中序遍历的结果序列是EBCDAFHIGJ, 试画出这棵二叉树。
答案:2、试找出分别满足下列条件的所有二叉树:(1)先根序列和中根序列相同;(2)后根序列和中根序列相同;(3)先根序列和后根序列相同;答案:(1)空二叉树或仅有一个结点的非空二叉树或任一结点均无左子树的非空二叉树(2)空二叉树或仅有一个结点的非空二叉树或任一结点均无右子树的非空二叉树(3)空二叉树或仅有一个结点的非空二叉树设有一段正文是由字符集{A,B,C,D,E,F}组成的,正文长度为100个字符,其中每个字符要 A B C D E F G I H J K L A B GD CH K E F I JL正文中出现的次数分别为17,12,5,28,35,3。
若采用哈夫曼编码对这段正文进行压缩存储,请完成如下的工作:(1)构造哈夫曼树(规定权值较小的结点为左子树);(2)写出每个字符的哈夫曼编码;(3)若有某一段正文的二进制编码序列为01101010110011,请按(2)的哈夫曼编码将它翻译成所对应的正文。
解:(1)在这段正文中,每个字符出现的次数相当于每个字符的出现频率,根据哈夫曼树的构造方法,可建造哈夫曼树如下图所示。
A D EBF C(2)各个字符的哈夫曼编码分别为:A :00B :011C :0101D :10E :11F :0100(3)若将二进制序列01101010110011从开头开始,依次分解为所对应的字符编码,即:011 0101 011 00 11,则所对应的字符序列为BCBAE 。
12 100 37 63 17 20 28 35 8 3 5。