zoukankan      html  css  js  c++  java
  • 第三章学习心得

    第三章数据结构总结

    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";

    */

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

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

  • 相关阅读:
    初探Java设计模式2:结构型模式(代理模式,适配器模式等)
    初探Java设计模式1:创建型模式(工厂,单例等)
    Java集合详解8:Java集合类细节精讲,细节决定成败
    Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同
    MySQL教程67-使用DISTINCT过滤重复数据
    MySQL教程66-数据表查询语句
    MySQL教程65-MySQL操作表中数据
    MySQL教程64-MySQL 流程控制函数
    MySQL教程63-MySQL 聚合函数
    MySQL教程62-MySQL日期和时间函数
  • 原文地址:https://www.cnblogs.com/lsy-273700263/p/12781790.html
Copyright © 2011-2022 走看看