第三章小结
在上学期学过计算机概论之后,对队列和栈有了初步的认识,通过这一章的学习,在代码上更加深入的理解的栈和队列。
学会了栈和队列的数据结构该怎样编写,以及栈的push和pop操作的实现,队列的入队出队操作的实现。
细化来说,
栈是LIFO结构,后进先出,可以用叠书的方式来形象记忆,
顺序栈:定义时有top指针和base指针,值得注意的是,top指针不是指向栈顶元素,而是栈顶的上一个位置,即栈顶元素应为top-1,判断栈空的条件是top == base。
链栈:创建时不需要头结点,因为栈的主要操作是在栈顶插入或者删除。定义时栈顶指针为空。和顺序栈不同的是,进行入栈操作时,不需要判断栈满。
栈实际应用:数制转换、括号匹配、表达式求值。重要应用:递归(特点:结构清晰,形式简洁,占用空间多,运行效率低)。
队列则是FIFO结构,先进先出,可以用排队买票的方式来形象记忆。
循环队列:定义时有头指针和尾指针,循环队列会产生“假溢出”的错误,所以在判断队满的时候要用“模”运算,凡是涉及队头或队尾指针的 修改都要将其对M心CQSIZE求模。队空:Q.front=Q.rear 。队满:(Q.rear+1)%MAXQSIZE == Q.front。
链队:定义时有头指针和尾指针,在链队入队的时候,与循环队列不同的是,链队不需要判断队满,其他操作与链表大同小异。
队列实际应用:舞伴问题。
浙公网安备 33010602011771号