【数据结构习题集附答案】
数据结构习题(含答案)

数据结构习题(含答案)数据结构习题(含答案)1. 题目描述:请实现一个栈,要求支持以下操作:push(x)将元素x 入栈;pop()弹出栈顶元素;top()返回栈顶元素;empty()判断栈是否为空。
解答:我们可以使用数组来实现栈的功能。
首先定义一个数组stack来存储栈中的元素,同时定义一个整型变量top来表示栈顶的索引位置。
初始时,将top设置为-1,表示栈中没有元素。
1.1 push(x)操作:当要将元素x入栈时,我们先将top的值加1,然后将x赋值给stack[top],即将x放入栈顶位置。
1.2 pop()操作:当调用pop()操作时,我们首先判断栈是否为空,即判断top的值是否为-1。
如果top等于-1,说明栈为空,无法进行pop()操作。
如果不为空,则将top的值减1,同时返回stack[top],即弹出栈顶元素。
1.3 top()操作:top()操作与pop()操作类似,只需在操作完成后不弹出栈顶元素,而是直接返回stack[top]即可。
1.4 empty()操作:empty()操作用来判断栈是否为空,只需判断top的值是否为-1即可。
如果top等于-1,则返回true,表示栈为空;否则返回false,表示栈不为空。
综上所述,我们可以用数组实现一个栈,满足push、pop、top和empty等操作。
2. 题目描述:请实现一个队列,要求支持以下操作:push(x)将元素x入队;pop()将队首元素出队;peek()返回队首元素;empty()判断队列是否为空。
解答:我们可以使用两个栈来实现一个队列的功能。
首先定义两个栈stack1和stack2,其中stack1用来存储新加入队列的元素,stack2用来存储队列中已经处理过的元素。
定义两个整型变量top1和top2,分别表示stack1和stack2的栈顶索引位置。
初始时,top1和top2均设置为-1,表示两个栈均为空。
2.1 push(x)操作:当要将元素x入队时,我们直接将x加入到stack1中,同时将top1的值加1。
数据结构试题集(包含答案-完整版)

数据结构试题集(包含答案-完整版)数据结构试题集(包含答案-完整版)1. 单选题1) 数据结构是一种()。
a) 存储结构b) 算法c) 数据模型d) 网络答案:c) 数据模型解析:数据结构是一种用于组织和存储数据的方式,描述了数据之间的关系以及对数据的操作。
2) 以下哪种数据结构可以通过索引直接访问元素?a) 链表b) 队列c) 栈d) 数组答案:d) 数组解析:数组是一种线性数据结构,可以通过索引直接访问指定位置的元素。
2. 多选题1) 哪些数据结构属于非线性结构?()a) 队列b) 树c) 栈d) 图答案:b) 树d) 图解析:线性结构中的元素存在一对一的关系,非线性结构中的元素存在一对多或多对多的关系,树和图属于非线性结构。
2) 下列哪些操作可以在栈上进行?()a) 入栈b) 出栈c) 查找d) 删除答案:a) 入栈b) 出栈解析:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
3. 简答题1) 请简要介绍线性表和非线性表。
答案:线性表是数据元素的一个有限序列,元素之间存在一对一的关系。
非线性表是指元素之间存在一对多或多对多的关系,如树和图。
2) 请解释什么是时间复杂度和空间复杂度。
答案:时间复杂度是衡量算法执行效率的度量,表示算法的运行时间随输入规模增长的速度。
空间复杂度是指算法执行过程中所需的存储空间随输入规模增长的速度。
4. 编程题题目:实现一个栈,包含push、pop和getMin三个操作,要求时间复杂度为O(1)。
答案:class MinStack:def __init__(self):self.stack = []self.min_stack = []def push(self, x):self.stack.append(x)if not self.min_stack or x <= self.min_stack[-1]:self.min_stack.append(x)def pop(self):if self.stack.pop() == self.min_stack[-1]:self.min_stack.pop()def getMin(self):return self.min_stack[-1]解析:在栈的基础上,使用一个辅助栈min_stack来记录当前栈中的最小值。
数据结构习题及参考答案

数据结构习题及参考答案一、概述在计算机科学领域,数据结构是指组织和存储数据的方式,以便于有效地访问和操作。
它是计算机算法和程序设计的基础。
下面将介绍一些常见的数据结构习题,并提供相应的参考答案,帮助读者更好地理解和掌握数据结构。
二、数组1. 习题:给定一个数组,编写一个函数来计算数组中元素的和。
【参考答案】```pythondef sum_array(arr):sum = 0for num in arr:sum += numreturn sum```三、链表1. 习题:给定一个链表,反转链表,并返回反转后的头节点。
【参考答案】```pythonclass ListNode:def __init__(self, val=0, next=None): self.val = valself.next = nextdef reverse_linked_list(head):prev = Nonecurr = headwhile curr:next_node = curr.nextcurr.next = prevprev = currcurr = next_nodereturn prev```四、栈和队列1. 习题:使用栈实现队列的功能。
【参考答案】```pythonclass MyQueue:def __init__(self):self.stack1 = []self.stack2 = []def push(self, x):self.stack1.append(x)def pop(self):if not self.stack2:while self.stack1:self.stack2.append(self.stack1.pop())return self.stack2.pop()def peek(self):if not self.stack2:while self.stack1:self.stack2.append(self.stack1.pop())return self.stack2[-1]def empty(self):return len(self.stack1) == 0 and len(self.stack2) == 0 ```五、树1. 习题:给定一个二叉树,判断它是否是高度平衡的。
数据结构习题集答案

数据结构习题集答案数据结构习题集答案数据结构是计算机科学中的重要概念,它研究如何组织和管理数据的方法和技术。
在学习数据结构的过程中,习题集是不可或缺的一部分。
通过解答习题,我们可以加深对数据结构的理解,并提升解决问题的能力。
本文将为大家提供一些常见数据结构习题的答案,希望能对大家的学习有所帮助。
一、线性数据结构1. 数组反转题目描述:给定一个整数数组,将其按照逆序排列。
解答:可以使用双指针法来解决这个问题。
定义两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置。
然后交换两个指针指向的元素,并向中间移动指针,直到两个指针相遇为止。
2. 链表反转题目描述:给定一个链表,将其按照逆序排列。
解答:可以使用迭代或递归的方法来解决这个问题。
迭代的方法是使用三个指针,分别指向当前节点、前一个节点和后一个节点,然后依次改变节点的指向,直到遍历完整个链表。
递归的方法是先递归地反转链表的后续部分,然后将当前节点插入到反转后链表的末尾。
二、非线性数据结构1. 二叉树遍历题目描述:给定一个二叉树,按照前序、中序和后序的方式遍历它。
解答:前序遍历是先访问根节点,然后递归地遍历左子树和右子树。
中序遍历是先递归地遍历左子树,然后访问根节点,最后递归地遍历右子树。
后序遍历是先递归地遍历左子树和右子树,最后访问根节点。
可以使用递归或迭代的方法来实现这三种遍历方式。
2. 图的深度优先搜索题目描述:给定一个图,按照深度优先的方式遍历它。
解答:深度优先搜索是一种用于遍历或搜索图和树的算法。
它从一个起始节点开始,递归地访问它的邻居节点,直到没有未访问的邻居节点为止。
然后回溯到上一个节点,继续访问它的未访问邻居节点,直到遍历完整个图。
三、高级数据结构1. 哈希表实现题目描述:使用哈希表实现一个简单的键值对存储结构。
解答:哈希表是一种用于存储键值对的数据结构,它通过将键映射到一个固定大小的数组中来实现。
可以使用一个数组和一个哈希函数来实现哈希表。
数据结构习题集(答案)

数据结构习题第一章绪论数据结构是一门研究非数值计算的程序设计问题中计算机的___①__以及它们之间的__②_ 和运算等的学科。
①A.数据元素 B.计算方法 C.逻辑存储 D.数据映像②A.结构 B.关系 C.运算 D.算法算法分析的目的是___①__ ,算法分析的两个主要方面是__②___ 。
① A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求该进D.分析算法的易懂性和文档性。
② A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性计算机算法指的是__①__ ,它必须具备输入、输出和__②_ 等5个重要特性。
① A.计算方法 B.排序方法C.解决问题的有限运算序列D.调度方法② A.可读性、可移植性和可扩展性 B. 可读性、可移植性和有穷性C.确定性、有穷性和可行性D.易读性、稳定性和安全性数据元素是数据处理的基本单位;数据项是数据处理的_最小单位。
数据结构是研究数据的逻辑结构___和__物理结构__,并对这种结构定义相适应的运算,设计出相应的算法,分析算法的效率。
算法的效率包括时间和空间两个方面,分别称为_空间复杂度和时间复杂度。
数据的逻辑结构是指_数据元素之间的关系__;包括线性结构、树形结构和图形结构三种类型,其中树形结构和图状结构合称为__非线性结构__。
线性结构中元素之间存在_一对一___ 关系,树形结构中元素之间存在_一对多___ 关系,图状结构中元素之间存在__多对多__ 关系。
|数据结构在计算机中的表示称为数据的物理(或存储)结构,数据的物理结构可以采用_顺序存储和_链式存储__两种存储方法。
顺序存储方法是把逻辑上相邻的元素存储在物理位置相邻的内存单元中;链式存储方法中元素间的关系是由__指针来表示_的。
第二章线性表链表不具备的特点是____ 。
A.可随机访问任一结点B.插入删除不需移动元素C.不必事先估计存储空间D.所需空间与其长度成正比不带头结点的单链表head 为空的判定条件是____。
数据结构习题及参考答案

数据结构习题及参考答案部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑数据结构习题及参考答案一、判断下列叙述的对错。
<1)线性表的逻辑顺序与物理顺序总是一致的。
<2)线性表的顺序存储表示优于链式存储表示。
<3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
<4)二维数组是其数组元素为线性表的线性表。
<5)每种数据结构都应具备三种基本运算:插入、删除和搜索。
二、设单链表中结点的结构为typedef struct node { file://链表结点定义ElemType data; file://数据struct node * Link; file://结点后继指针} ListNode;<1)已知指针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;<2)非空的循环单链表first的尾结点<由p所指向)满足:A. p->link == NULL;B. p == NULL;C. p->link == first;D. p == first;三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?b5E2RGbCAP四、一棵具有n个结点的理想平衡二叉树<即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示<注意n可能为0)?p1 EanqFDPw五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。
数据结构习题及标准答案
数据结构习题及标准答案一、栈和队列1. 栈(Stack)是一种后进先出(Last-In-First-Out,LIFO)的数据结构。
栈的简单实现可以使用数组或链表,下面是一个使用数组实现的栈的示例代码:```pythonclass Stack:def __init__(self):self.stack = []def is_empty(self):return len(self.stack) == 0def push(self, item):self.stack.append(item)def pop(self):if self.is_empty():return Nonereturn self.stack.pop()def peek(self):if self.is_empty():return Nonereturn self.stack[-1]```2. 队列(Queue)是一种先进先出(First-In-First-Out,FIFO)的数据结构。
队列的简单实现也可以使用数组或链表,下面是一个使用链表实现的队列的示例代码:```pythonclass Queue:def __init__(self):self.queue = []def is_empty(self):return len(self.queue) == 0def enqueue(self, item):self.queue.append(item)def dequeue(self):if self.is_empty():return Nonereturn self.queue.pop(0)def peek(self):if self.is_empty():return Nonereturn self.queue[0]```二、链表1. 链表(Linked List)是一种常见的线性数据结构。
链表由节点组成,每个节点包含数据和指向下一个节点的指针。
数据结构习题集(包含全部答案)
数据结构习题集(自编)第一章绪论一、选择题1.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。
A.结构B.关系C.运算D.算法2.在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.逻辑结构和存储结构3.线性表的逻辑顺序和存储顺序总是一致的,这种说法()。
A.正确B.不正确C.无法确定D.以上答案都不对:4.算法分析的目的是()。
A.找出算法的合理性B.研究算法的输人与输出关系C.分析算法的有效性以求改进D.分析算法的易懂性5. 算法的时间复杂度取决于()A.问题的规模B待处理数据的初态C. A和B6.一个算法应该是()。
A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.7. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现}B.为解决某问题的算法与为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.在下面的程序段中,对x的赋值语句的频度为()for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+1;A.2n B.n C.n2D.log2n!10.以下数据结构中,()是非线性数据结构A.树B.字符串C.队列D.栈11. 下列数据中,()是线性数据结构。
A.哈夫曼树 B.有向无环图 C. 二叉排序树 D. 栈12.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。
严蔚敏《数据结构(c语言版)习题集》全答案
q->next=p;p=q; q=s;s=s->next; //把 L 的元素逐个插入新表表头 } q->next=p;s->next=q;L->next=s; }//LinkList_reverse 分析:本算法的思想是 ,逐个地把 L 的当前元素 q 插入新的链表头部 ,p 为新 表表头.
见书后答案.
2.17
Status Insert(LinkList &L,int i,int b)//在无头结点链表 L 的第 i 个 元素之前插入元素 b {
p=L;q=(LinkList*)malloc(sizeof(LNode)); q.data=b;
if(i==1) { q.next=p;L=q; //插入在链表头部 } else { while(--i>1) p=p->next; q->next=p->next;p->next=q; //插入在第 i 个元素的位置 } }//Insert
2.15
void ListConcat(LinkList ha,LinkList hb,LinkList &hc)//把链表 hb 接在 ha 后面形成链表 hc {
hc=ha;p=ha; while(p->next) p=p->next; p->next=hb; }//ListConcat
char *sport; enum{male,female} gender; char schoolname; //校名为'A','B','C','D'或'E' char *result; int score;
《数据结构》习题集答案
个人资料整理,仅供个人学习使用 1 / 7 《数据结构》习题集答案 绪论(1-1) 一、选择题: 1、B、D 2、A、B 3、4 4、C、A 5、C 6、D 7、A 8、A 9、D 10、1 11、2 12、A、D 13、3 二、填空题 1、数据元素 数据元素间关系 2、集合 线性结构 树形结构 图状结构或网状结构。 3、数据的组织形式,即数据元素之间逻辑关系的总体。而逻辑关系是指数据元素之间的关 联方式或称“邻接关系”。 4、表示(又称映像)。 5、(1)逻辑特性 (2)在计算机内部如何表示和实现 (3)数学特性。 6、算法的时间复杂度和空间复杂度。 7、(1)逻辑结构(2)物理结构(3)操作(运算)(4)算法。 绪论(1-2) 一、选择题: 1、B 2、C 3、C,B 4、B 5、C 6、D 7、B 8、O(sqrt(n)) 二、填空题 1、(1)有穷性 (2)确定性 (3)可行性。 2、(1)n+1 (2)n (3)n(n+3)/2 (4)n(n+1)/2。 3、1+(1+2++(1+2+3)+…+(1+2+…+n)=n(n+1)(n+2)/6 O(n3)矚慫润厲钐瘗睞枥庑赖賃軔朧。
4、O(n)
5、n(n-1)/2 线性表(1-1) 一、选择题: 1、B 2、B 3、A 4、B 5、C 6、A 7、D 8、D 9、D 10、B,C 11、C 12、C 二、填空题 1、顺序 2、(n-1)/2 3、n-i+1 第二章 线性表(1-2) 一、选择题: 1、C 2、B 3、B 4、C 5、A 6、C 7、B 8、A 9、D 10、B 11、C 12、B 13、A聞創沟燴鐺險爱氇谴净祸
測樅。 二、填空题 1、py->next=px->next; px->next=py 2、主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另 作判断。另外,不论链表是否为空,链表指针不变。 3、O(1),O(n) 4、单链表,多重链表,(动态)链表,静态链表 个人资料整理,仅供个人学习使用 2 / 7 5、f->next=p->next; f->prior=p; p->next->prior=f; p->next=f;残骛楼諍锩瀨濟溆塹籟婭骒東。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【数据结构习题集附答案】数据结构习题集附答案第一章绪论一、选择题1.组成数据的基本单位是()A.数据项B.数据类型C.数据元素D.数据变量2.数据结构是研究数据的()以及它们之间的相互关系。
A.理想结构,物理结构B.理想结构,抽象结构C.物理结构,逻辑结构D.抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。
①A.数据元素B.计算方法C.逻辑存储D.数据映像②A.结构B.关系C.运算D.算法5.算法分析的两个主要方面是()。
A.数据复杂性和程序复杂性B.正确性和简明性C.可读性和简明性D.空间复杂性和时间复杂性 6.算法分析的目的是()。
A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性7.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。
①A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法②A.可执行性,可移植性和可扩充性B.可行性,确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性二、判断题 1.数据的机内表示称为数据的存储结构。
() 2.算法就是程序。
()3.数据元素是数据的最小单位。
()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。
()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。
()三、填空题1.数据逻辑结构包括________、________、________和________四种类型,其中树形结构和图形结构合称为________。
2.在线性结构中,第一个结点________前驱结点,其余每个结点有且只有________个前驱结点;最后一个结点________后续结点,其余每个结点有且只有________个后续结点。
3.在树形结构中,树根结点没有________结点,其余每个结点有且只有________个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以________。
4.在图形结构中,每个结点的前驱结点数和后续结点数可以________。
5.线性结构中元素之间存在________关系,树形结构中元素之间存在________关系,图形结构中元素之间存在________关系。
6.算法的五个重要特性是________、________、________、________、________。
7.数据结构的三要素是指________、________和________。
8.链式存储结构与顺序存储结构相比较,主要优点是________________________________。
9.设有一批数据元素,为了最快的存储某元素,数据结构宜用________结构,为了方便插入一个元素,数据结构宜用________结构。
四、算法分析题 1.求下列算法段的语句频度及时间复杂度for(i=1; i i++) for(j =1; j j++) x=x+1; 分析:该算法为一个二重循环,执行次数为内、外循环次数相乘,但内循环次数不固定,与外循环有关,因些,时间频度T(n)=1+2+3+…+n=n*(n+1)/2 有1/4≤T(n)/n2≤1,故它的时间复杂度为O(n2), 即T(n)与n2 数量级相同。
2.分析下列算法段的时间频度及时间复杂度for (i=1;ii++)for (j=1;jj++) for ( k=1;kk++) x=i+j-k; 分析算法规律可知时间频度T(n)=1+(1+2)+(1+2+3)+...+(1+2+3+…+n) 由于有1/6 ≤ T(n)/ n3 ≤1,故时间复杂度为O(n3) 第二章线性表一、选择题1.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )。
A.110 B.108 C.100 D.120 2.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。
A.64 B.63 C.63.5 D.7 3.线性表采用链式存储结构时,其地址()。
A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续与否均可以4.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()。
A.s-next=p;p-next=s; B.s-next=p-next;p-next=s; C.s-next=p-next;p=s; D.p-next=s;s-next=p; 5.在一个单链表中,若删除p所指结点的后续结点,则执行()。
A.p-next=p-next-next; B.p=p-next; p-next=p-next-next; C.p-next=p-next; D.p=p-next-next; 6.下列有关线性表的叙述中,正确的是()。
A.线性表中的元素之间隔是线性关系B.线性表中至少有一个元素C.线性表中任何一个元素有且仅有一个直接前趋D.线性表中任何一个元素有且仅有一个直接后继7.线性表是具有n个()的有限序列(n≠0)。
A.表元素B.字符C.数据元素D.数据项二、判断题1.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。
()2.如果没有提供指针类型的语言,就无法构造链式结构。
()3.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。
()4.语句p=p-next完成了指针负值并使p指针得到了p指针所指后继结点的数据域值。
()5.要想删除p指针的后继结点,我们应该执行q=p-next ;p-next=q-next;free(q)。
()三、填空题1.已知P为单链表中的非首尾结点,在P结点后插入S结点的语句为:________。
2.顺序表中逻辑上相邻的元素物理位置( )相邻,单链表中逻辑上相邻的元素物理位置________相邻。
3.线性表L=(a1,a2,...,an)采用顺序存储,假定在不同的n +1个位置上插入的概率相同,则插入一个新元素平均需要移动的元素个数是________。
4.在非空双向循环链表中,在结点q的前面插入结点p的过程如下:p-prior=q-prior; q-prior-next=p; p-next=q; ________; 5.已知L是无表头结点的单链表,是从下列提供的答案中选择合适的语句序列,实现:表尾插入s结点的语句序列是________。
A.p-next=s; B.p=L; C.L=s; D.p-next=s-next; E.s-next=p-next; F.s-next=L; G.s-next=null; H.while(p-next!=0) p=p-next; I.while(p-next!=null) p=p-next; 四、算法设计题1.试编写一个求已知单链表的数据域的平均值的函数(数据域数据类型为整型)。
2.已知带有头结点的循环链表中头指针为head,试写出删除并释放数据域值为x的所有结点的c函数。
3.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环链表,每个结点有价格、数量和链指针三个域。
现出库(销售)m台价格为h的电视机,试编写算法修改原链表。
4.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环链表,每个结点有价格、数量和链指针三个域。
现新到m 台价格为h的电视机,试编写算法修改原链表。
5.线性表中的元素值按递增有序排列,针对顺序表和循环链表两种不同的存储方式,分别编写C函数删除线性表中值介于a与b(a≤b)之间的元素。
6.设A=(a0,a1,a2,...,an-1),B=(b0,b1,b2,...,bm-1)是两个给定的线性表,它们的结点个数分别是n和m,且结点值均是整数。
若n=m,且ai= bi (0≤in ),则A=B;若nm ,且ai=bi (0≤in ),则AB;若存在一个j,jm ,jn ,且ai=bi (0≤ij ),若ajbj,则AB,否则AB。
试编写一个比较A和B的C函数,该函数返回-1或0或1,分别表示AB或A=B或AB。
7.试编写算法,删除双向循环链表中第k个结点。
8.线性表由前后两部分性质不同的元素组成(a0,a1,...,an-1,b0,b1,...,bm-1),m和n为两部分元素的个数,若线性表分别采用数组和链表两种方式存储,编写算法将两部分元素换位成(b0,b1,...,bm-1,a0,a1,...,an-1),分析两种存储方式下算法的时间和空间复杂度。
9.用循环链表作线性表(a0,a1,...,an-1)和(b0,b1,...,bm-1)的存储结构,头指针分别为ah和bh,设计C函数,把两个线性表合并成形如(a0,b0,a1,b1,…)的线性表,要求不开辟新的动态空间,利用原来循环链表的结点完成合并操作,结构仍为循环链表,头指针为head,并分析算法的时间复杂度。
10.试写出将一个线性表分解为两个带有头结点的循环链表,并将两个循环链表的长度放在各自的头结点的数据域中的C函数。
其中,线性表中序号为偶数的元素分解到第一个循环链表中,序号为奇数的元素分解到第二个循环链表中。
11.试写出把线性链表改为循环链表的C函数。
12.己知非空线性链表中x结点的直接前驱结点为y,试写出删除x 结点的C函数。
第三章栈和队列一、选择题1.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()。
A.edcba B.decba C.dceab D.abcde 2.栈结构通常采用的两种存储结构是()。
A.线性存储结构和链表存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构 3.判定一个栈ST(最多元素为m0)为空的条件是()。
A.ST-〉top!=0 B.ST-〉top==0 C.ST-〉top!=m0 D.ST-〉top=m0 4.判定一个栈ST(最多元素为m0)为栈满的条件是()。
A.ST-top!=0 B.ST-top==0 C.ST-top!=m0-1 D.ST-top==m0-1 5.一个队列的入列序列是1,2,3,4,则队列的输出序列是()。
A.4,3,2,1 B.1,2,3,4 C.1,4,3,2 D.3,2,4,1 6.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear则当前队列中的元素个数是()。
A.(rear-front+m)%m B.rear-front+1 C.rear-front-1 D.rear-front 7.栈和队列的共同点是()A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点8.表达式a*(b+c)-d的后缀表达式是()。