数据结构和算法习题及答案解析

合集下载

数据结构与算法 试题及答案

数据结构与算法 试题及答案

绪论

一、填空题

1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:集合_、线性结构_、树型结构_、图状结构_。

2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:顺序存储_、链式存储_、索引存储_、散列存储_。

二、选择题

1、一个算法必须在执行有穷步之后结束,这是算法的(B )。

A、正确性

B、有穷性

C、确定性

D、可行性

2、算法的每一步必须有确切的定义,也就是说,对于每步需要执行的动作必须严格、清楚地给出规定,这是算法的(A)。

A、正确性

B、有穷性

C、确定性

D、可行性

3、算法原则上都是能够有机器或人所完成的。整个算法好象是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作,这是算法的(D)

A、正确性

B、有穷性

C、确定性

D、可行性

三、简单题

1、什么是数据结构?什么是算法?两者有什么关系?

什么是数据结构?数据结构是按某种逻辑关系组织起来的一批数据(或称带结构的数据元素的集合)应用计算机语言并按一定的存储表示方式把它们存储在计算机的存储器中,并在其上定义了一个运算的集合。

什么是算法?广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”

两者有什么关系?算法与数据结构关系密切。选择的数据结构是否恰当直接影响算法的效率;而数据结构的优劣由算法的执行来体现。

2、什么是复杂度和空间复杂度?

时间复杂度是指执行算法所需要的计算工作量;而

空间复杂度是指执行这个算法所需要的内存空间。

3、数据的逻辑结构分几种?存储结构又有哪几种?

数据的逻辑结构:结构定义中的“关系”,描述的是数据元素之间的逻辑关系;包括线性结构(线性表、栈、队、串、数组)和非线性结构(图形结构、树形结构);

数据结构与算法分析习题与参考答案

数据结构与算法分析习题与参考答案

大学

《数据结构与算法分析》课程

习题及参考答案

模拟试卷一

一、单选题(每题 2 分,共20分)

1.以下数据结构中哪一个是线性结构?( )

A. 有向图

B. 队列

C. 线索二叉树

D. B树

2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,

则执行如下( )语句序列。

A. p=q; p->next=q;

B. p->next=q; q->next=p;

C. p->next=q->next; p=q;

D. q->next=p->next; p->next=q;

3.以下哪一个不是队列的基本运算?()

A. 在队列第i个元素之后插入一个元素

B. 从队头删除一个元素

C. 判断一个队列是否为空

D.读取队头元素的值

4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成( )

个不同的字符串?

A.14

B.5

C.6

D.8

5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。

以下6-8题基于图1。

6.该二叉树结点的前序遍历的序列为( )。

A.E、G、F、A、C、D、B

B.E、A、G、C、F、B、D

C.E、A、C、B、D、G、F

D.E、G、A、C、D、F、B

7.该二叉树结点的中序遍历的序列为( )。

A. A、B、C、D、E、G、F

B. E、A、G、C、F、B、D

C. E、A、C、B、D、G、F

E.B、D、C、A、F、G、E

8.该二叉树的按层遍历的序列为( )。

A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F

C. E、A、G、C、F、B、D

《数据结构与算法》课后习题答案

《数据结构与算法》课后习题答案

2.3 课后习题解答

2.3.2 判断题

1.线性表的逻辑顺序与存储顺序总是一致的。〔×〕

2.顺序存储的线性表可以按序号随机存取。〔√〕

3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。〔×〕

4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有一样的特性,因此属于同一数据对象。〔√〕

5.在线性表的顺序存储构造中,逻辑上相邻的两个元素在物理位置上并不一定相邻。

〔×〕

6.在线性表的链式存储构造中,逻辑上相邻的元素在物理位置上不一定相邻。〔√〕

7.线性表的链式存储构造优于顺序存储构造。〔×〕

8.在线性表的顺序存储构造中,插入和删除时移动元素的个数与该元素的位置有关。

〔√〕

9.线性表的链式存储构造是用一组任意的存储单元来存储线性表中数据元素的。〔√〕

10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储构造。〔×〕

11.静态链表既有顺序存储的优点,又有动态链表的优点。所以它存取表中第i 个元素的时间与i 无关。〔×〕

12.线性表的特点是每个元素都有一个前驱和一个后继。〔×〕

2.3.3 算法设计题

1.设线性表存放在向量A[arrsize] 的前 elenum 个分量中,且递增有序。试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。

【提示】直接用题目中所给定的数据构造〔顺序存储的思想是用物理上的相邻表示逻辑上的

相邻,不一定将向量和表示线性表长度的变量封装成一个构造体〕,因为是顺序存储,分配

数据结构与算法习题册参考答案

数据结构与算法习题册参考答案

A 对特定问题求解步骤的一种描述,是指令的有限序列。 B 计算机程序
三. 简答题
1. 分析以下各程序段,并用大 O 记号表示其执行时间。 (1) i=1;k=0; While(i<n-1) { k=k+10*i; i++; } (2) i=1;k=0; do { k=k+10*i; i++; }while(i<=n)
5
课后作业部分
第三章 栈和队列
2. 在操作序列 push(1). push(2). pop. push(5). push(7). pop. push(6)之后, 栈顶元素和 栈底元素分别是什么?(push(k)表示 k 入栈,pop 表示栈顶元素出栈。 )
栈顶元素为 6,栈底元素为 1。
3. 在操作序列 EnQueue(1).
⑴ 应选用顺序存储结构。很少进行插入和删除操作,所以空间变化不大,且需要快速存取,所 以应选用顺序存储结构。 ⑵ 应选用链式存储结构。链表容易实现表容量的扩充,适合表的长度动态发生变化。 ⑶ 应选用链式存储结构。因为一个城市的设计和规划涉及活动很多,需要经常修改、扩充和删 除各种信息,才能适应不断发展的需要。而顺序表的插入、删除的效率低,故不合适。
算法设计要求中的健壮性指的是 算法在发生非法操作时可以作出处理的特性。
二. 选择题
1. 顺序存储结构中数据元素之间的逻辑关系是由 D 表示的。 C 存储位置 D 指针 A 线性结构 B 非线性结构 C 表示的, 链接存储结构中的

数据结构与算法设计课后习题及答案详解

数据结构与算法设计课后习题及答案详解

数据结构与算法设计课后习题及答案详解

1. 习题一:数组求和

题目描述:给定一个整数数组,编写一个函数来计算它的所有元素之和。

解题思路:遍历数组,将每个元素累加到一个变量中,最后返回累加和。

代码实现:

```python

def sum_array(arr):

result = 0

for num in arr:

result += num

return result

```

2. 习题二:链表反转

题目描述:给定一个单链表,反转它的节点顺序。

解题思路:采用三指针法,依次将当前节点的下一个节点指向上一个节点,然后更新三个指针的位置,直到链表反转完毕。

代码实现:

```python

class ListNode:

def __init__(self, val=0, next=None):

self.val = val

self.next = next

def reverse_list(head):

prev = None

curr = head

while curr:

next_node = curr.next

curr.next = prev

prev = curr

curr = next_node

return prev

```

3. 习题三:二叉树的层序遍历

题目描述:给定一个二叉树,返回其节点值的层序遍历结果。

解题思路:采用队列来实现层序遍历,先将根节点入队,然后循环出队并访问出队节点的值,同时将出队节点的左右子节点入队。

代码实现:

```python

class TreeNode:

def __init__(self, val=0, left=None, right=None): self.val = val

《数据结构与算法》课后习题答案

《数据结构与算法》课后习题答案

2.3 课后习题解答

2.3.2 判断题

1.线性表的逻辑顺序与存储顺序总是一致的。(×)

2.顺序存储的线性表可以按序号随机存取。(√)

3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。(×)

4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。(√)

5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。(×)

6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。(√)7.线性表的链式存储结构优于顺序存储结构。(×)

8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。(√)

9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。(√)10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。(×)

11.静态链表既有顺序存储的优点,又有动态链表的优点。所以它存取表中第i个元素的时间与i无关。(×)

12.线性表的特点是每个元素都有一个前驱和一个后继。(×)

2.3.3 算法设计题

1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。【提示】直接用题目中所给定的数据结构(顺序存储的思想是用物理上的相邻表示逻辑上的相邻,不一定将向量和表示线性表长度的变量封装成一个结构体),因为是顺序存储,分配的存储空间是固定大小的,所以首先确定是否还有存储空间,若有,则根据原线性表中元素的有序性,来确定插入元素的插入位置,后面的元素为它让出位置,(也可以从高下标端开始一边比较,一边移位)然后插入x ,最后修改表示表长的变量。

数据结构与算法分析课后习题答案

数据结构与算法分析课后习题答案

数据结构与算法分析课后习题答案

【篇一:《数据结构与算法》课后习题答案】

>2.3.2 判断题

2.顺序存储的线性表可以按序号随机存取。(√)

4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。(√)

6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。(√)

8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。(√)

9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。(√)

2.3.3 算法设计题

1.设线性表存放在向量a[arrsize]的前elenum个分量中,且递增有序。试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。

【提示】直接用题目中所给定的数据结构(顺序存储的思想是用物理上的相邻表示逻辑上的相邻,不一定将向量和表示线性表长度的变量封装成一个结构体),因为是顺序存储,分配的存储空间是固定大小的,所以首先确定是否还有存储空间,若有,则根据原线性表中元素的有序性,来确定插入元素的插入位置,后面的元素为它让出位置,(也可以从高下标端开始一边比较,一边移位)然后插入x ,最后修改表示表长的变量。

int insert (datatype a[],int *elenum,datatype x) /*设elenum为表的最大下标*/ {if (*elenum==arrsize-1) return 0; /*表已满,无法插入*/

else {i=*elenum;

数据结构与算法 试题及答案

数据结构与算法 试题及答案

数据结构与算法试题及答案

数据结构与算法试题及答案

在计算机科学领域,数据结构与算法是非常重要的基础知识。数据

结构是一种组织和存储数据的方式,而算法则是解决问题的方法和步骤。掌握好数据结构与算法,有助于提高程序的运行效率和解决实际

问题。

下面是一些关于数据结构与算法的试题及其答案,希望能够帮助大

家更好地理解和应用这方面的知识。

试题一:什么是数据结构?请举例说明。

答案一:数据结构是一种组织和存储数据的方式。它可以使数据的

操作更加高效。常见的数据结构有数组、链表、栈、队列、树和图等。举个例子,数组是一种线性数据结构,可以存储一组相同类型的元素。

试题二:什么是算法?请举例说明。

答案二:算法是一种解决问题的方法和步骤。它是一个精确的描述,用于解决特定问题。常见的算法有排序算法、查找算法、递归算法等。例如,冒泡排序算法是一种比较简单的排序算法,通过不断交换相邻

元素的位置来达到排序的目的。

试题三:什么是时间复杂度和空间复杂度?

答案三:时间复杂度和空间复杂度是衡量算法性能的两个指标。时

间复杂度是指算法执行所需要的时间,通常用大O符号表示。空间复

杂度是指算法执行所需要的额外空间,通常也用大O符号表示。它们

都是描述算法随着输入规模增大而变化的趋势。

试题四:介绍一下常见的数据结构和相应的操作。

答案四:常见的数据结构有数组、链表、栈、队列、树和图等。

- 数组是一种线性数据结构,可以随机访问元素,并且在插入和删

除元素时需要移动其他元素。

- 链表是一种动态数据结构,不需要固定的内存空间,但只能通过

指针进行元素的访问。

数据结构与算法习题及答案

数据结构与算法习题及答案

精心整理

第1章绪论

习题

1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现

5

A

6

{x=x-10;y--;}

elsex++;

(2)for(i=0;i

for(j=0;j

a[i][j]=0;

(3)s=0;

fori=0;i

for(j=0;j

s+=B[i][j];

sum=s;

(4)i=1;

while(i<=n)

i=i*3;

(5)x=0;

for(i=1;i

for(j=1;j<=n-i;j++)

x++;

(6)x=n;n108 C63.5 C1 C-1 C1 Cext=s;(*s).next=(*p).next;

C.s->next=p->next;p->next=s->next;

D.s->next=p->next;p->next=s;

2

,

=(rear+1)%=(rear+1)%(m+1)

(13)最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A.(rear+1)%n====front

C.rear+1==frontD.(rear-l)%n==front

(14)栈和队列的共同点是()。

A.都是先进先出

B.都是先进后出

C.只允许在端点处插入和删除元素

D.没有共同点

(15)一个递归算法必须包括()。

A.递归部分

B.终止条件和递归部分

C.迭代部分

D.终止条件和迭代部分

(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)

数据结构与算法习题及答案

数据结构与算法习题及答案

第1章绪论

习题

1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?

5.选择题

(1)在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构B.紧凑结构和非紧凑结构

C.线性结构和非线性结构D.内部结构和外部结构

(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.存储结构B.存储实现

C.逻辑结构D.运算实现

(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。

A.数据具有同一特点

B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致

C.每个数据元素都一样

D.数据元素所包含的数据项的个数要相等

(4)以下说法正确的是()。

A.数据元素是数据的最小单位

B.数据项是数据的基本单位

C.数据结构是带有结构的各数据项的集合

D.一些表面上很不相同的数据可以有相同的逻辑结构

(5)以下与数据的存储结构无关的术语是()。

A.顺序队列 B. 链表 C.有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构

A.树B.字符串C.队D.栈

6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;

while(y>0)

if(x>100)

{x=x-10;y--;}

else x++;

(2)for (i=0; i<n; i++)

数据结构与算法分析—期末复习题及答案

数据结构与算法分析—期末复习题及答案

数据结构与算法分析—期末复习题及答案

1. 简答题

a) 什么是数据结构?

数据结构是一种组织和存储数据的方法,它涉及到将数据元素以

及它们之间的关系组织成一种特定的方式,以便于有效地访问和操作。

b) 数据结构的分类有哪些?

数据结构可以分为线性结构和非线性结构。线性结构包括数组、

链表、栈和队列等;非线性结构包括树和图等。

c) 什么是算法?

算法指的是完成特定任务或求解特定问题的一系列步骤或指令。

算法需要满足正确性、可读性、健壮性和高效性等特性。

d) 算法的时间复杂度和空间复杂度是什么?

时间复杂度是指在算法执行过程中所需的时间资源,空间复杂度

是在算法执行过程中所需的存储空间资源。

2. 选择题

a) 在排序算法中,如果待排序序列已经基本有序,以下哪个算法

的性能最优?

选项:

A. 快速排序

B. 冒泡排序

C. 插入排序

D. 归并排序

正确答案:C. 插入排序

b) 以下哪个数据结构通常用于实现递归算法?

选项:

A. 数组

B. 链表

C. 栈

D. 队列

正确答案:C. 栈

3. 填空题

a) 计算以下给定二叉树的前序遍历结果:

A

/ \

B C

/ \ / \

D E F G

正确答案:A, B, D, E, C, F, G

b) 给出选择排序算法的伪代码:

```

for i in range(len(arr)):

min_index = i

for j in range(i+1, len(arr)):

if arr[j] < arr[min_index]:

min_index = j

arr[i], arr[min_index] = arr[min_index], arr[i]

算法与数据结构试题及答案

算法与数据结构试题及答案

数据结构试卷(一)

一、单选题(每题2 分,共20分)

1.栈和队列的共同特点是()。

A.只允许在端点处插入和删除元素

B。都是先进后出

C.都是先进先出

D。没有共同点

2.用链接方式存储的队列,在进行插入运算时( ).

A. 仅修改头指针 B。头、尾指针都要修改

C。仅修改尾指针 D.头、尾指针可能都要修改

3.以下数据结构中哪一个是非线性结构?( )

A。队列B。栈 C. 线性表D。二叉树

4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位

置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。

A.688 B.678 C.692 D.696

5.树最适合用来表示( )。

A。有序数据元素B。无序数据元素

C。元素之间具有分支层次关系的数据D。元素之间无联系的数据

6.二叉树的第k层的结点数最多为()。

A.2k-1 B。2K+1 C.2K—1 D. 2k—1

7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进

行二分查找,则查找A[3]的比较序列的下标依次为( )

A。1,2,3 B。9,5,2,3

C. 9,5,3

D. 9,4,2,3

8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为

A。 O(1) B. O(n) C。 O(1og2n) D。 O(n2)

9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %

9作为散列函数,则散列地址为1的元素有( )个,

数据结构与算法练习题库(含答案)

数据结构与算法练习题库(含答案)

数据结构与算法练习题库(含答案)

一、单选题(共80题,每题1分,共80分)

1、对一棵二叉树的结点从 1 开始顺序编号。要求每个结点的编号大于其左子树所有结点的编号、但小于右子树中所有结点的编号。可采用▁▁▁▁▁ 实现编号。

A、中序遍历

B、先序遍历

C、层次遍历

D、后序遍历

正确答案:A

2、设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?

A、5

B、4

C、2

D、0

正确答案:C

3、两个有相同键值的元素具有不同的散列地址

A、一定不会

B、一定会

C、可能会

D、有万分之一的可能会

正确答案:C

4、将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?

A、0.73

B、0.27

C、0.64

D、0.45

正确答案:D

5、对N个记录进行归并排序,归并趟数的数量级是:

A、O(NlogN)

B、O(logN)

C、O(N)

D、O(N2)

正确答案:B

6、下列说法不正确的是:

A、图的遍历是从给定的源点出发每一个顶点仅被访问一次

B、图的深度遍历不适用于有向图

C、遍历的基本算法有两种:深度遍历和广度遍历

D、图的深度遍历是一个递归过程

正确答案:B

7、二叉树的中序遍历也可以循环地完成。给定循环中堆栈的操作序列如下(其中push为入栈,pop为出栈): push(1), push(2), push(3), pop(), push(4), pop(), pop(), push(5), pop(), pop(), push(6), pop()

算法与数据结构题库及答案

算法与数据结构题库及答案

一、单项选择题

1某算法的时间复杂度是O(n2),表明该算法()。

A 问题规模是n2

B 问题规模与n2成正比

C 执行时间等于n2 D执行时间与n2成正比

2、关于数据结构的描述,不正确的是()。

A数据结构相同,对应的存储结构也相同。

B 数据结构涉及数据的逻辑结构、存储结构和施加其上的操作等三个方面。

C 数据结构操作的实现与存储结构有关。

D 定义逻辑结构时可不考虑存储结构。

3、按排序策略分来,起泡排序属于()。

A 插入排序

B 选择排序C交换排序 D 归并排序

4、利用双向链表作线性表的存储结构的优点是()。

A 便于进行插入和删除的操作 B提高按关系查找数据元素的速度

C 节省空间

D 便于销毁结构释放空间

5、一个队列的进队顺序为1,2,3,4,则该队列可能的输出序列是()。

A 1,2,3,4

B 1,3,2,4

C 1,4,2,3

D 4,3,2,1

6、Dijkstra算法是按()方法求出图中从某顶点到其余顶点最短路径的。

A 按长度递减的顺序求出图的某顶点到其余顶点的最短路径

B按长度递增的顺序求出图的某顶点到其余顶点的最短路径

C 通过深度优先遍历求出图中从某顶点到其余顶点的所有路径

D 通过广度优先遍历求出图的某顶点到其余顶点的最短路径

7、字符串可定义为n(n≥0)个字符的有限()。其中,n是字符串的长度,表明字符串中字符的个数。

A 集合

B 数列

C 序列

D 聚合

8、在二维数组A[9][10]中,每个数组元素占用3个存储单元,从首地址SA开始按行连续存放。在这种情况下,元素A[8][5]的起始地址为()。

数据结构真题及其答案解析

数据结构真题及其答案解析

数据结构真题及其答案解析

引言

在计算机科学领域中,数据结构是一个关键概念。它是指组织和

存储数据的方法和原则。良好的数据结构可以大大提高算法的效率和

性能。在学习和应用数据结构的过程中,了解和解析真题对于提高对

数据结构的理解和应用能力至关重要。本文将讨论几个典型的数据结

构真题,并提供详细的答案解析。

链表题目

1. 题目描述:实现一个单向链表,具有以下功能:

a) 在链表末尾添加一个元素。

b) 删除链表中指定位置的元素。

c) 返回链表的长度。

解析:这道题要求你实现一个链表数据结构,并完成对应的

功能。为了实现一个单向链表,我们需要定义一个节点类,每个节点

包含一个值和指向下一个节点的指针。在链表的尾部添加一个元素时,我们需要遍历链表直至最后一个节点,然后将新的节点链接到最后一

个节点的指针上。删除链表中指定位置的元素时,我们需要找到该位

置的前一个节点,并将其指针指向目标位置的下一个节点。返回链表

的长度则只需要遍历链表并记录节点数即可。

栈题目

2. 题目描述:实现一个栈数据结构,具有以下功能:

a) 入栈(Push)操作,将一个元素加入栈中。

b) 出栈(Pop)操作,从栈中取出一个元素并将其删除。

c) 返回栈中元素的个数。

解析:栈是一种后进先出(Last In First Out,LIFO)的数

据结构,类似于现实生活中的栈。我们可以使用数组或链表来实现一

个栈。入栈操作将一个元素添加到栈的顶部,而出栈操作则取出栈顶

的元素并将其删除。为了实现这个功能,我们需要维护一个指向栈顶

的指针,并更新指针的位置。返回栈中元素的个数只需要记录当前栈

数据结构习题(含答案)

数据结构习题(含答案)

第一章绪论

一、填空题

1.数据是描述客观事物的数、字符以及所有能输入到计算机且能够被计算机程序加工处理的符号集合。

_________是数据的基本单位;___________是数据的最小单位。通常被计算机加工处理的数据不是孤立无关的,而是彼此之间存在着某种联系,将这种数据间的联系称为________。

2.数据结构进行形式化定义时,可以从逻辑上认为数据结构DS是_________的集合D和D上_________的集合R所构成的二元组:DS=(D,R)。

3.已知某数据结构的二元组形式表示为:A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>}。则此数据结构属于_____________结构。

4.一个算法的时间复杂度通常用问题规模大小的函数来表示,当一个算法的时间复杂度与问题规模n大小无关时,则表示为__________;成正比关系时,则表示为___________;成对数关系时,则表示为___________;

成平方关系时,则表示为__________。

5.数据结构的逻辑结构包括_____________、树型结构和图型结构三种类型,其中树型结构和图型结构合称为_____________;数据结构的存储结构主要包括____________和____________两种类型。

6.线性结构的特点是:第一个结点_______前驱结点,其余结点有且仅有_______个前驱结点;最后一个结点_______后继结点,其余每个结点有且仅有_______个后继结点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章绪论

习题

1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现

5.选择题

(1)在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构

C.线性结构和非线性结构 D.内部结构和外部结构

(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.存储结构 B.存储实现

C.逻辑结构 D.运算实现

(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。

A.数据具有同一特点

B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致

C.每个数据元素都一样

D.数据元素所包含的数据项的个数要相等

(4)以下说法正确的是()。

A.数据元素是数据的最小单位

B.数据项是数据的基本单位

C.数据结构是带有结构的各数据项的集合

D.一些表面上很不相同的数据可以有相同的逻辑结构

(5)以下与数据的存储结构无关的术语是()。

A.顺序队列 B. 链表 C.有序表 D. 链栈

(6)以下数据结构中,()是非线性数据结构

A.树 B.字符串 C.队 D.栈

6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;

while(y>0)

if(x>100)

{x=x-10;y--;}

else x++;

(2)for (i=0; i

for (j=0; j

a[i][j]=0;

(3)s=0;

for i=0; i

for(j=0; j

s+=B[i][j];

sum=s;

(4)i=1;

while(i<=n)

i=i*3;

(5)x=0;

for(i=1; i

for (j=1; j<=n-i; j++)

x++;

(6)x=n; n108 C63.5 C1 C-1 C1 Cext=s;

(*s).next=(*p).next;

C.s->next=p->next; p->next=s->next;

D.s->next=p->next; p->next=s;

(14) 在双向链表存储结构中,删除p所指的结点时须修改指针()。

A.p->next->prior=p->prior; p->prior->next=p->next;

B.p->next=p->next->next; p->next->prior=p;

C.p->prior->next=p; p->prior=p->prior->prior;

D.p->prior=p->next->next; p->next=p->prior->prior;

(15) 在双向循环链表中,在p指针所指的结点后插入q所指向的新结点,其修改指针的操作是()。

A.p->next=q; q->prior=p; p->next->prior=q; q->next=q;

B.p->next=q; p->next->prior=q; q->prior=p; q->next=p->next;

C.q->prior=p; q->next=p->next; p->next->prior=q; p->next=q;

D.q->prior=p; q->next=p->next; p->next=q; p->next->prior=q;

2.算法设计题

(1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){

pa=La->next; pb=Lb->next;

Lc=pc=La; 3 C想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作()。

A.x=top->data;top=top->link; B.top=top->link;x=top->link;

C.x=top;top=top->link; D.x=top->link;

(5)设有一个递归算法如下

int fact(int n) { 3 C0 C线性表的链式存储结构 D. 栈

(11)用链接方式存储的队列,在进行删除运算时()。

A. 仅修改头指针

B. 仅修改尾指针

C. 头、尾指针都要修改

D. 头、尾指针可能都要修改

(12)循环队列存储在数组A[0..m]中,则入队时的操作为()。

A. rear=rear+1

B. rear=(rear+1)%(m-1)

C. rear=(rear+1)%m

D. rear=(rear+1)%(m+1)

(13)最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A. (rear+1)%n==front

B. rear==front

C.rear+1==front D. (rear-l)%n==front

(14)栈和队列的共同点是()。

A. 都是先进先出

B. 都是先进后出

C. 只允许在端点处插入和删除元素

D. 没有共同点

(15)一个递归算法必须包括()。

A. 递归部分

B. 终止条件和递归部分

C. 迭代部分

D. 终止条件和迭代部分

(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈) 根据提示,算法可设计为:

0’9’0’9’ 0’0’9’0’0’9’0’IOIIOIOO B. IOOIOIIO C. IIIOIOIO D. IIIOOIOO

②通过对①的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。

①A和D是合法序列,B和C 是非法序列。

②设被判定的操作序列已存入一维数组A中。

int Judge(char A[])

0’0’M-1]实现循环队列,其中M是队列长度。设队头指针 front和队尾指

针rear,约定front指向队头元素的前一位置,rear指向队尾元素。定义front=rear时为

队空,(rear+1)%m=front 为队满。约定队头端入队向下标小的方向发展,队尾端入队向下

标大的方向发展。

(1)#define M 队列可能达到的最大长度

typedef struct

{ elemtp data[M];

int front,rear;

} cycqueue;

(2)elemtp delqueue ( cycqueue Q)

012121111212

C010102101 C100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A.808 B.818 C.1010 D.1020

(7)设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址

为()。

A.BA+141 B.BA+180 C.BA+222 D.BA+225

(8)设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元

相关文档
最新文档