DS博客作业02--栈和队列

| 这个作业属于哪个班级 |


| ---- | ---- | ---- |
| 这个作业的地址 |
| 这个作业的目标 | 学习栈和队列的结构设计及运算操作 |
|姓名|喻文康|

0.PTA得分截图

1.本周学习总结

1.1 栈

顺序栈:即用顺序表实现栈存储结构。

头文件 stack.h 栈的头文件
初始化栈: InitStack(SqStack &s) 参数:顺序栈s 功能:初始化
入栈函数: Push(SqStack &s,SElemType e) 参数:顺序栈s,元素e 功能:将e入栈
出栈函数: Pop(SqStack &s,SElemType &e) 参数:顺序栈s,元素e 功能:出栈,e接收出栈元素值
获得栈顶元素函数: GetTop(SqStack s,SElemType &e) 参数:顺序栈s,元素e 功能:得到栈顶元素
判断栈为空: bool stack::isEmpty()//判断是否为空栈
判断栈满: bool isFull(); //判断是否栈满

链栈:栈的链式存储结构,简称链栈

  由于栈只是栈顶在做插入和删除操作,所以栈顶应该放在单链表的头部。
  另外,都有了栈顶在头部了,单链表中的头结点也就失去了意义,通常对于链栈来说,是不需要头结点的。
  对于链栈来说,基本不存在栈满的情况,除非内存已经没有使用空间了。
  对于空栈来说,链表原来的定义是头指针指向空,那么链栈的空其实就是top=NULL。
链栈的初始化:InitStack(LinkStack &S) 参数:链栈S 功能:初始化
入栈函数:Push(LinkStack &S,SElemType e) 参数:链栈S,元素e 功能:将e入栈
出栈函数: Pop(LinkStack &S,SElemType &e) 参数:链栈S,元素e 功能:栈顶出栈,e接收出栈元素值
获得栈顶元素函数: GetTop(LinkStack &S,SElemType &e) 参数:链栈S,元素e 功能:得到栈顶元素

1.2 栈的应用

1.括号匹配检验public class Match
2.迷宫求解
3.表达式求值 & 中缀表达式转后缀表达式

1.3 队列

顺序队列:

队列的初始化函数:void InitQueue(SqQueue *Q)
队列的入队:Status EnQueue(SqQueue *Q,QElemtype e)
队列的出队:Status DeQueue(SqQueue *Q,QElemtype *e)
取队头元素:Status GetHead(SqQueue *Q,QElemtype *e)
队列长度:Status QueueLength(SqQueue Q)
队列为空判断:Status QueueEmpty(SqQueue *Q)
在include头文件中,相应函数如下:
队列的入队: q.push(x)
队列的出队: q.pop()
取队头元素: q.front()
取队尾元素: q.back()
队列长度: q.size()
队列为空判断: q.empty()
清空队列: q.clear()


顺序队列存在假溢出的缺陷,所以常常用环形队列
环形队列:

操作函数
定义结构体:

初始化队列:

求一个环形队列的长度:

环形队列的入队操作:

环形队列的出队操作:

链队列的结构、操作函数

初始化:

入队列:

出队列:

获取队头元素的值:

判断是否为空:

队列应用:银行业务队列简单模拟
代码实现:

2.PTA实验作业

2.1 符号配对(未完成)

2.1.1 解题思路及伪代码

2.1.2 总结解题所用的知识点

2.2 银行业务队列简单模拟

2.2.1 解题思路及伪代码

解题思路:

伪代码:

2.2.2 总结解题所用的知识点

用到了1. 队列的出队操作和入队操作 2. 队列的基本操作函数,如判空、取队头元素、出队入队等等 3. 对循环条件的控制

3.阅读代码(未完成)

3.1 题目及解题代码
3.2 该题的设计思路及伪代码
3.3 分析该题目解题优势及难点。

posted @ 2021-04-11 02:52  Y-smile  阅读(107)  评论(0编辑  收藏  举报