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

1.本周学习总结(0--1分)

这两周的时间,学习了栈与队列的知识,栈和队列都是特殊的线性表,它们与一般线性表的区别在于在用它们进行数据的存储时会有一些不同的限制条件。栈和队列的应用很广泛,比如在浏览网页时,返回网页的操作就涉及到了栈的知识。栈和队列的应用对计算机的一些问题的解决起到了很大的作用,。可以有效地节约时间。这两周的学习,主要了解了栈和队列的逻辑结构,存储结构以及各自的特点,在哪种情况下该使用哪种线性表,以及一些实例。
栈的操作有两种,分别为数组操作与链表操作。
  数组操作:对线性表的应用,它是一种特殊的线性表,具有一定存储大小的限制,只对栈顶的数据进行操作,它定义的结构体内有一个top作为标记栈顶的数据,若为-1无数据,0表示栈内含有一个数据,在进栈和出栈的同时对top进行++和—的操作。除了top外,结构体里还定义了一个大小为MAXSIZE的数据,用于存储栈内的数据,而数据存储的位置即为top所指向的那个位置。
  链表操作:链栈其实就是将数组定义的栈中的数据改为一个链表的头指针即可,将头指针作为栈顶,对该链表进行进栈和出栈的操作。同时定义一个count来保存栈内的数据数量。链栈相比于数组定义的栈的优点是它不存在存储的最大数量。出栈是,只需定义一个指针保存头指针,然后让头指针指向后一个指针,在释放保存的指针内存空间即可。

2.PTA实验作业(6分)

2.1.题目1:6-1 另类堆栈
2.1.1设计思路
bool Push( Stack S, ElementType X )    //此函数首先判断栈是否满,若满,则输出相对应的值,返回 false; 若栈不满,则先将X进栈,再返回 true.

ElementType Pop( Stack S )      //此函数首先判断栈是否为空,若为空,则输出相对应的值,返回 false;若不为空,则将栈顶元素出栈。
2.1.2代码截图

2.1.3本题PTA提交列表说明。

1. 编译错误是由于返回值出错导致的。
2. 多种错误出现的原因是因为判断栈满与栈空的条件出错。
3. 这是一道基础题,考察了对栈的基本操作的运用。
2.2 题目2:7-1 jmu-字符串是否对称
2.2.1设计思路
首先创建一个栈与一个队列
输入一个字符串
运用for循环,依次将字符串入栈
再用 while 循环将栈中元素依次出栈,并将不为x的字符依次入队列
之后按照要求输出相对应的值
2.2.2代码截图

![](https://img2018.cnblogs.com/blog/1476709/201904/14767 09-20190421174245665-594757960.png)

2.2.3本题PTA提交列表说明。

1. 编译错误是因为对c++语法不够熟悉,在开头忘记添加 using namespace std .
2.3 题目3:算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
2.3.1设计思路
2.3.2代码截图

2.3.3本题PTA提交列表说明。

3、栈和队列上机考试(-3--3分)

3.1 上机体会
上机考试时的感觉和平时写pta题目的感觉很不一样,在写pta题目的时候,时间充足,可以慢慢写,而考试的时候就没有这么多的思考时间。pta上有很多题目是平时做过的,但是在考试的时候就做不出来,主要原因是平时的题目,在遇到困难时,总会去问同学或者百度,在解决题目之后并没有理解透彻,导致了在遇到相同题目时,还是不会写。

3.2 错题

1.另类循环队列

如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。

  上机课时写的代码:

   课后代码

解答:在上机课考试时所写的代码有很大的问题,对于循环队列不了解,不知道各种判断条件,所以写了很久一直没有写出来。

 2. In order to convert the infix expression 4 * 3 + (6 * 3 - 12) to postfix expression using a stack S, then the minimum size of S must be: 
      解答:题目的意思是:将中缀表达式4 * 3 +(6 * 3 - 12)转换为后缀表达式使用堆栈存放,栈的最小大小必须为多少。
完全忽略了最小的概念。最大的存放就是括号里的两个运算符和括号前的一个运算符,加起来一共三个。

posted on 2019-04-21 16:41  风言风语r  阅读(640)  评论(0编辑  收藏  举报

导航