第三章学习总结

第三章 栈和队列

本章我们学习了线性结构的另外两种表现形式:栈和队列。

栈:只限定仅在表尾进行插入或删除的线性表。表尾段称作栈顶,表头端称作栈底,它的修改原则是后进先出,用于按照保存数据时的相反顺序来使用数据。类似于我们生活中放书拿书,最后叠上去的最早被抽出来。

队列:是一种先进先出的线性表,它只允许在表的一段进行插入,而在另一端删除元素。允许插入的一段称为队尾,允许删除的一段称为队头。它类似于我们生活中排队买东西,先来的先买,先输入的数据先输出。

接下来谈谈我在做作业时所遇到的问题。

括号匹配问题

一开始没能将栈的知识与题目进行联系,简单来说就是一脑懵逼。后来经过老师上课和书本上的提示,了解了大致的算法。于是创建栈、初始化栈、运用while循环和switch函数,遇到左括号压入栈(Push),遇到右括号就进行匹配。然后我结合书本没有定义获取栈顶元素的函数GetTop,而是直接输出栈顶元素(用Pop函数,返回一个char类型的字符),将flag赋值为1,进行匹配后成功则跳出循环,不成功将flag赋值为0,最后用if判断栈是否为空或者flag是否为1,并按要求输出yes或no,基本问题不大。

银行排队问题

虽然题目看起来很复杂,但它实际上就是入队和出队另一种表现。我用了循环队列的形式,一样的定义顺序结构,初始化循环队列、输入元素输出元素。唯一有一些头疼的地方就是,由于要定义两个队列A、B,输出顺序有所不同,首先要考虑AB两个队列都不为空的情况,这时候判断条件为:while((QA.front!=QA.rear)&&(QB.front!=QB.rear)&&(QA.rear-QA.front)%1000>=2),两次A队出队,一次B队出队,之后还要考虑B为空A不为空,判断条件:

while(QA.front!=QA.rear),A为空B不为空:while(QB.front!=QB.rear),将依次输出的数字放到新定义的数组中去,最后将数组输出即可。

经过作业和实践,我对链表的使用也更加清晰,对数据结构的真实含义有了更进一步的理解:数据结构是把我们之前所学过的最基本的语法进行叠加改造,最后组成一个功能更强的语句,便于我们解决后续更多复杂的问题,实现更复杂的算法。

原文地址:https://www.cnblogs.com/butterboy/p/10634001.html

时间: 2024-11-09 02:16:50

第三章学习总结的相关文章

第三章学习小结—-转

[学习目标] 01掌握一维数组的声明和使用方法(OK) 02掌握二维数组的声明和使用方法(OK) 03掌握字符串的声明.赋值.比较和连接方法(连接很少用) 04熟悉字符的ASCII码和ctype.h中的字符函数 05正确认识++.+=等能修改变量的运算符(OK) 06学会用编译选项-Wall获得更多的警告信息(OK) 07了解不同操作系统中换行符的表示方法(嗯) 08掌握fgetc和getchar的使用方法(fgetc基本没用过) 09掌握预处理和迭代开发的技巧(嗯) 程序3-1 逆序输出 输入

《构建之法》第三章学习心得

这周我学习了<构建之法>第三章,讲述了软件工程师的成长.软件系统的绝大部分模块都是由个人开发或维护的.在软件工程的术语中,这些单个的成员叫做Individ-ual Contributor(IC).IC在团队中的流程是怎么样的呢?以开发人员为例,流程如下. 1.通过交流.实验.快速原型等方法,理解问题.需求或任务 2.提出多种解决办法并估计工作量 3.其中包括寻找以前的解决方案,因为很多工作是重复性的 与相关角色交流解决问题的提案,决定一个可行的方案 执行,把想法变成实际中能工作的代码,同时验证

201671010105 2016-2017-2《Java程序设计》第三章学习心得

通过学习第三章,我的总结有以下几点: 先说内容,第三章我们主要学习的是java的基本程序设计结构,学习了与之相关的一些内容,注释,数据类型,变量,运算符,字符串,输入输出语句,数组等等,在这些内容中,有些是在C语言中同样可以学到的,我们上学期已经学过,但也有很多是与c不一样的,是首次接触,比如注释,无论是java还是c语言,对于编程者而言,给自己编写的程序注释是一种良好的习惯,不止自己看懂,别人也能看懂,又比如数据类型,java中多了byte(字节型)和boolean(布尔型).在后面内容中也有

20165233 Java第二、三章学习总结

2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第二.三章 ch2 标识符与关键字 基本数据类型: 逻辑类型:boolean 整数类型:int.byte.short.long(注意:long型常量用后缀L来表示:且Java中没有无符号声明) 字符类型:char 浮点类型:float.double(float常量后面必须有后缀f或F ) 类型转换运算 输入.输出数据 数组 ch3 运算符与表达式 if条件分支语句 switch开关语句 循环语句(包括for语句.wh

第三章学习小结

第三章主要学习了关于栈和队列的知识,知道了有关栈和队列的初始化和基本操作.栈是只在一头进行插入与删除操作的数据结构,而队列是可以在两头进行插入与删除操作的数据结构.此外栈和队列分别可以分为链栈与顺序栈,链队与顺序队列.栈的特点是先进后出,队列的特点是先进先出. 在这里分享有关栈的函数: #include <stack> //头文件 stack <elemtype> L //定义栈 push():L.push(x) 将数据x放在栈顶 top():L.top()返回栈顶元素 pop()

《Linux命令行与shell脚本编程大全》 第三章 学习笔记

第三章:基本的bash shell命令 bash程序使用命令行参数来修改所启动shell的类型 参数 描述 -c string 从string中读取命令并处理他们 -r 启动限制性shell,限制用户在默认目录下活动 -i 启动交互性shell,允许用户输入 -s 从标准输入读取命令 环境变量PS1.PS2 PS1:控制默认命令行提示符格式 PS2:控制后续命令行提示符格式   bash shell提示符字符串中使用的特殊字符 字符 描述 \a 报警字符 \d “日 月 年”格式显示的日期 \e

linux第三章学习笔记

第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种. 进程管理是所有操作系统的心脏所在. 一.进程 1. 进程是处于执行期的程序.除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部数据.一个或者多个执行线程等多种资源 线程是在进程活动中的对象:内核调度的对象是线程而不是进程 在Linux系统中,并不区分线程和进程 可能存在两个或者多个进程执行的是同一个程序:甚至N个进程共享打开的文件.地址空间之类的资源 2. 线程:是进程中活动的对象.每个线程都有一个独立的程序计数器,进程栈

《Linux内核设计与实现》第三章学习笔记

第三章  进程管理 姓名:王玮怡  学号:20135116 一.进程 1.进程的含义 进程是处于执行期的程序以及相关资源的总称,程序本身并不是进程,实际上就是正在执行的代码的实时结果.Linux内核通常把进程也叫“任务”. 2.线程的含义 执行线程简称线程,是在进程中互动的对象.内核调度的对象是线程而不是进程.Linux系统不区分线程和进程,线程只是一种特殊的进程. 3.进程的执行过程 (1)clone()调用fork(),通过复制一个现有进程来创建一个全新的进程,进程开始存活.其中调用fork

2018-2019-1 20189215 《构建之法》第三章学习总结

第3章 软件工程师的成长 教材学习内容总结 软件工程的术语中,单个的成员叫做Individual Contributor(IC). 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的,个人在团队中有独立的流程 IC在团队中的流程 通过交流.实验.快速原型等方法,理解问题.需求或任务 提出多种解决办法并估计工作量(其中包括寻找以前的解决方案,因为有很多工作是重复性的) 与相关角色交流解决问题的提案,决定一个可行的方案 执行,想法变成代码 合作,测试实现方案,修复BUG 发