• 第三章学习心得


    第三章数据结构总结

    3章栈和队列

    1. (stack) 是限定仅在表尾进行插入或删除操作的线性表。 因此, 对栈来说, 表尾端有其特殊含义, 称为栈顶 (top), 相应地, 表头端称为栈底 (bottom)。 不含元素的空表称为空栈。(栈又称为后进先出 (Last In First Out, LIFO) 的线性表) 

    2.队列(queue)是一种先进先出(First In First Out, FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。在队列中,允许插入的一端称为队尾(rear), 允许 删除的一端则称为队头(front)。

    3、栈的基本操作除了入栈和出栈外, 还有栈的初始化、 栈空的判定,以及取栈顶元素等(有两种存储表示,顺序表示和链式表示。)

    4、队列也有两种存储表示,顺序表示和链式表示。基本操作有初始化、求队列长度、入队、出队、取队头元素

    5. Hanoi塔问题的的递归算法

    【算法步骤】

    1).如果n=l, 则直接将编号为l的圆盘从A移到C, 递归结束。

    2)否则:

    • 递归, 将A上编号为1至n-l的圆盘移到B, C做辅助塔;

    • 直接将编号为n的圆盘从A移到C;

    • 递归, 将B上编号为1至n-1的圆盘移到C, A做辅助塔。

    算法效率分析:时间复杂度为 0(2n) 空间复杂度为 O(n)

    6、作业、实践、小组合作

    思路:检验算法借助一个栈, 每当读入个左括号, 则直接入栈,等待相匹配的同类右括号;每当

    读入一个右括号,若与当前栈顶的左括号类型相同, 则二者匹配,将栈顶的左括号出栈,直到表

    达式扫描完毕。在处理过程中,还要考虑括号不匹配出错的情况。

    (2)实践思路:

    思路:用两个队列存顾客编号,然后用循环最时间,A窗口一分钟一个,B窗口两分钟一个

    补充:c++库函数 queue

    #include <iostream>

    #include <queue>

     queue<Type> M // 定义一个queue的变量,且定义时已经初始化

    while(!q.empty()) q.pop();  //重复使用时,用这个初始化

     q.push(1);        //进队列

     q.pop();          //出队列

     int v=q.front();  //得到队首的值

     int s=q.size();   //得到队列里元素个数

    (2)小组合作

    /*  编号是有 字母 + 数字组成

        客户编号 + 客户姓名  

        客户编号 + 积分

        输入 姓名 积分 ( 姓名 -> 编号 ->积分 )

        不存在 输出 "not exist";

    */

    在写通过名字查找积分的程序的时候是很不清楚该怎么写

    看完一些同学的代码之后:

  • 相关阅读:
    各版本arm-gcc区别与安装【转】
    内存与文件系统【笔记】
    ramdisk文件系统的介绍与制作【转】
    浅谈linux中的根文件系统(rootfs的原理和介绍)【转】
    mybatis generator自动生成代码
    java no XXX in java.library.path怎么配置
    使用JNotify 监控文件变化
    javaFx中fxml的键盘事件
    okhttp同步异步下载文件,与http请求工具类
    JavaFx2 实现系统托盘SystemTray
  • 原文地址:https://www.cnblogs.com/lsy-273700263/p/12781790.html
Copyright © 2020-2023  润新知