- 1
- 0
- 约4.72千字
- 约 65页
- 2020-06-12 发布于浙江
- 举报
第四章 栈和队列
4.1 栈
4.2 栈的顺序存储结构和操作实现
4.3 栈的链接存储结构和操作实现
4.4 栈的简单应用举例
4.5 算术表达式的计算
4.6 栈与递归
4.7 队列;4.1 栈
栈的定义
栈(stack)又称堆栈,是限定只在表尾进行插入或删除操作的线性表。栈
S = ( a1, a2, …,an )
是按a1, a2, …,an次序进栈的,a1为栈底元素,an为栈顶元素。
;栈与递归
递归可使问题及求解步骤的描述变得简洁而清晰。特别是对于复杂问题,用递归方法分析描述,比较自然,利于理解。递归包括递归步骤和终止出口。
递归问题转化为非递归往往要用栈来实现,把在递归中用到的变量入栈出栈,如书上【习题4-4】之9,10;4.7 队列
队列是一种先进先出(FIFO)线性表。只允许在其一端删除元素,即队头(front),只允许在其另一端插入元素,即队尾(rear)。
;图 4-10 顺序队列的插入和删除操作;; 初始时, 队列为空, 有
front=0 rear=0; 队列的静态数组一般是循环使用的。
为了判别队列满和队列空的指针状况,令front指向队首元素的前一个位置。
入队时需先修改入队指针(队尾指针)
rear = = (rear +1)% QueueMaxSize
然后判断队列满的条件
(rear+1)% QueueMaxSize == front
最后将元素入队。
出队时先 判断队列空的条件
front == rear
然后修改队头指针
front == (front +1)% QueueMaxSize
最后将元素出队。;;在顺序队列中插入和删除,不需要比较和移动任何元素,只需修改队尾和队首指针,并向队尾写入元素或从队首取出元素
时间复杂度为:O(1)
若存储队列的数组的长度为N,则队列长度(即所含元素个数)为:
(N+rear-front)%N;(2)队列的链式存储结构
struct LinkQueue {
LNode* front;
LNode* rear;
};
struct LNode {
ElmeType data;
LNode* next;
};;;在链队中插入和删除,不需要比较和移动任何元素,只需修改个别相关指针和进行结点的动态分配或回收操作
时间复杂度为:O(1);4.4.4 队列运算的实现
1. 队列运算在顺序存储结构上的实现
(1)初始化队列
void InitQueue(Queue Q)
{
Q.MaxSize=10;
Q.queue=new ElemType[Q.MaxSiize];
Q.front=Q.rear=0;
}
;
(2)将队列清空,并释放动态存储空间
void ClearQueue(Queue Q)
{
if(Q.queue!=NULL) delete []Q.queue;
Q.front=Q.rear=0;
Q.queue=NULL;
Q.MaxSize=0;
}
;(3)检查队列是否为空
int QueueEmpty(Queue Q) {
return Q.front==Q.rear;
}
(4)读取队头元素
//让front指针不是指向队首元素,而是指向它的前一个位置
即:队首元素是队首指针front的下一个位置中的元素
ElemType PeekQueue(Queue Q) {
if(Q.front==Q.rear){
cerrQueue is Empty.endl;
exit(1); }
return Q.queue[(Q.front+1)%QueueMaxSize];
};(5)向队列插入新元素-1
void EnQueue(Queue Q, const ElemType item)
{
int k=(Q.rear+1)%QueueMaxSize;//队尾的下一位置
if(k==Q.front){
cerrQueue is overflow.endl;
exit(1);
}
Q.rear=k;
Q.queue[k]=item;
};(5)向队列插入新元素-2
void EnQueue(queue Q, const ElemType item)
{
if((Q.rear+1)%QueueMaxSize==Q.front)
{
//扩大2倍的存储空间
int k=sizeof(ElemType);
Q
您可能关注的文档
最近下载
- 2025部编版一年级道德与法治下册教学计划.docx VIP
- 以奋斗者为本PPT.ppt VIP
- 学习《未成年人保护法》预防未成年人犯罪知识讲座PPT.pptx VIP
- 2025年度单位普通党员组织生活会个人对照检查材料.docx VIP
- Unit2AmazingChinaReadingI课件-译林版英语八年级下册(1).pptx VIP
- 建设工程工程量清单计价规范(GB 50500-2024).docx VIP
- 华为以奋斗者为本.pptx VIP
- 被执行人生活费申请书范文.docx VIP
- 国际人才英语教程(中级)课后习题答案解析.pdf
- 高频精选:大庆职业学院单招面试题及答案.doc VIP
原创力文档

文档评论(0)