• 数据结构:第三章学习小结


    第三章:栈和队列

    一.本章内容小结

    1.栈的定义:栈的头尾分别称为“栈底”和“栈顶”,是“后进先出(LIFO)”结构的线性表。其中不含元素的栈称为“空栈”。如下图:

    2.队列的定义:是一种“先进先出(FIFO)”结构的线性表,它只允许在表的一端进行插入,而在另一端删除元素。允许插入的一端称为“队尾”,允许删除的一端称为“队头”。如上图。

    3.常用栈的结构代码:

    //定义结构体
    typedef struct{
        SElemType *base;
        SElemType *top;
        int stacksize;
    }Sqstack;
    Status InitStack(Sqstack &S)
    {//构造一个空栈S
        S.base = new SElemType[MAXSIZE];
        if(!S.base) exit(OVERFLOW);//存储分配失败
        S.top = S.base;//top初始为base,空栈 
        S.stacksize =  MAXSIZE;
        return OK;
    
    }
    //入栈:
    Status Push(Sqstack &S,SElemType e)
    {//插入元素e为新的栈顶元素 
        if(S.top-S.base=S.stacksize) return ERROR;//栈满 
        *S.top++=e;//元素e压入栈顶,栈顶指针+1 
        return OK; 
    }
    //出栈
    Status Pop(Sqstack &S,SElemType e)
    {//删除S的栈顶元素,用e返回其值 
          if(S.top == S.base) return ERROR;//栈空 
          e = *--S.top;
          return OK;
    } 

    二、完成作业实践的心得体会。

    在慕课上看到老师的“带你打代码”——括号匹配,在步步跟着打的过程中,学习到了几种与栈相关的函数写法。有如下几种函数:

    void InitStack(Sqstack &S);//初始化 
    void Push(Sqstack &S,char e);//将元素e入栈 
    void Pop(Sqstack &S,char &e);//出栈一元素至e 
    bool StackEmpty(Sqstack &S);//栈空 
    bool stackFull(Sqstack S);//栈满 
    bool Matching(string a);//对字符串a的括号进行匹配检查 

    出现的问题:1.在遍历函数——Matching中,不小心加了cin >> ch,使得函数跑不了。2.初始化函数的形参S没有用引用符号。

    三、向大家分享的资料:《大话数据结构》第四章:栈与队列

    推荐理由:有多种案例实现包括源代码,有助于基础比较一般的同学共同学习巩固,方便理解与应用得更好。


    四、目标

    上一阶段目标完成情况:在课上问答中不懂的地方会仔细听老师的语音讲解,在慕课视频上也有努力跟学了几份代码,只是在课后拓展方面有待提高,在课程进度上还是有些跟不上。

    接下来的目标:在学习时不急不躁,充分理解概念为先,之后多多的实践练习敲代码也是必需的,同时课堂上不懂的随时提问,课后也可自行在网上搜索更好的解答。

  • 相关阅读:
    SpringMVC 集成 Swagger【问题】 No qualifying bean of type RequestMappingHandlerMapping found for dependency
    【leetcode】medianofTwoSortedArrays
    记一次apache+php调优
    java 文件定位
    Java知识探究一:关于IO类库
    180app待选内容
    SQlserver 2000 根据spid 查询执行的SQL
    (转)Flashbuilder4.5中文版破解方法
    代码整洁之道
    手机分辨率基础知识(DPI,DIP计算)
  • 原文地址:https://www.cnblogs.com/heyi-777/p/12765880.html
Copyright © 2020-2023  润新知