常州工学院数据结构作业-第3章 栈和队列

3.1 简答题(不用抄题目)

1. 栈的两种存储结构是什么?

栈的存储结构

和线性表类似,栈也有两种基本的存储结构:顺序存储结构和链式存储结构。

顺序栈:

顺序栈是使用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放栈中的数据元素。

由于栈是一种特殊的线性表,因此在线性表的顺序存储结构的基础上,选择线性表的一端作为栈顶即可。

根据数组操作的特性,选择数组下标大的一端,即线性表顺序存储的表尾来作为栈顶,此时入栈、出栈等操作可以在Ο(1)时间完成。

由于栈的操作都在栈顶完成,因此在顺序栈的实现中需要附设一个指针 top 来动态的指示栈顶元素在数组中的位置。

通常 top 可以用栈顶元素所在数组下标来表示,top= -1 时表示空栈。

链栈:

链栈即采用链表作为存储结构实现的栈。

当采用单链表存储线性表后,根据单链表的操作特性选择单链表的头部作为栈顶,此时,入栈、出栈等操作可以在Ο(1)内完成。

由于栈的操作只在线性表的一端进行,在这里使用带头结点的单链表或不带头结点的单链表都可以。

使用带头结点的单链表时,结点的插入和删除都在头结点之后进行;使用不带头结点的单链表时,结点的插入和删除都在链表的首结点上进行。

2.判定一个顺序栈ST(最多元素为m0)为空的条件是什么?

ST -> top == -1

3.判定一个顺序栈ST(最多元素为m0)为栈满的条件是什么?

 ST -> top= =m0-1

4.栈的特点是什么?队列的特点是为什么?

1.在栈中,栈的修改按照 先进后出 的原则进行。
2.栈底指针始终指向栈底,栈顶指针始终指向最上面的那个元素。

1.队列是一种 先进先出 的线性表。允许在表的一端进行插入,而在另一端进行删除元素。

2.在队列中,允许插入的一端称为队尾,允许输出的一段称为队首。队首元素始终指向最前面的元素,队尾元素始终指向最后到来的元素。

5.带头结点的链栈S中,将一个指针s所指结点(e)进栈,执行的语句是什么?

链栈的进栈操作:

Status Push (LinkStack *S, SElemType e)
{
	LinkStackPtr s = (LinkStackPtr) malloc (sizeof(StackNode));
	s->data = e;
	s->next = s->top;		        //把当前的栈顶元素赋值给新结点的直接后继
	
	S->top = s;		                //将新的结点s赋值给栈顶指针
	S->count++;
	return OK;
}

6.带头结点的链栈S中,出栈一个元素给x,执行的语句是什么?

链栈的出栈结构:

Status Pop  (LinkStack *S, SElemType *e)
{
	LinkStackPtr x;
	if (StackEmpty( *S ))
	return ERROR;
 
	*e = S->top->data;
	x = S->top;			            //将栈顶结点赋值给x
	S->top = S->top->next;		        //使栈顶指针下移一位,指向后一结点
	free(x);	                        //释放结点x
	S->count--;
	return OK;
}

7.栈和队列的共同点是什么?

1.栈和队列的共同处是:它们都是由几个数据特性相同的元素组成的有限序列,也就是线性表。

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

8.判定一个循环队列QU(最多元素为m0)为空的条件是什么?

QU->front == QU->rear

9.判定一个循环队列QU(最多元素为m0,少用一个元素空间)为满队列的条件是什么?

QU->front == (QU->rear+1)%m0

10. 循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则求当前队列中的元素个数的语句是什么?

等效于问:假设以数组 A[m]存放循环队列的元素

(rear-front+m)%m

3.2 算法分析题(不用抄题目)

  1. 优点:每个栈仅用一个顺序存储空间时,操作简单。

缺点:若分配空间小,容易产生溢出;若分配空间大,容易造成浪费,各栈不能共享空间。

  1. 优点:多个栈仅用一个顺序存储空间,能够充分利用存储空间,只在整个存储空间都用完时才会产生溢出(不容易产生溢出)。

缺点:当一个栈满时要向左、右查询有无空闲单元。如果有,则要移动元素和修改相关的栈底和栈项指针。当接近栈满时,要查询空闲单元、移动元素以及修改栈底、栈顶指针,此过程计算复杂且耗时。

  1. 优点:多个链栈一般不用考虑栈的溢出。

缺点:栈中元素用指针相连接,比顺序存储多占用存储空间。

2. 简述下列算法的功能

删除栈中值为 x 的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值