链表(Linked List)、栈(Stack)、队列(Queue)是数据结构中最基础的三大结构(还有一个是数组)。熟悉并掌握数据结构和算法是合格程序员基本功之一,不同的结构在不同的应用场景中往往会带来不一样的处理效率。之前文章中已经介绍了链表,本文将介绍栈和队列,以及这三种结构的实现方法。
栈和队列栈栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈 示意图
栈,通俗地说,就像我们往一个杯子里面放东西一样,先放进去的放在最下面,只有把上面的东西拿出来后才能拿出下面压着的东西。
栈,具有很多用处,计算机中很多处理都是通过栈这种数据结构来进行的,比如算术运算,准备两个栈,一个栈存储数字,一个栈存储符号,从头开始依次把字符对应压入到这两个栈中,当所有字符都放入栈之后,依次从数字栈中取出两个元素,并从符号栈中取出 ...
代码学习
未读数据结构和算法分析(Data Structures and Algorithm Analysis) 的第一节课是回顾之前所学的递归(Recursion),作为导入课的同时还可以简单复习一下 java(这门课所使用语言)。因此第一周的课程和 lab 不算难,以下是 Lab 的具体细节。
Lab 1题目 1
Read in a positive number and compute its factorial using recursion.
Note that your class should be named “T1”, and should contain
a main function, which does IO
and a recursive function, public static int factR(int n), which computes the factorial
You may build you recursion as follows.
Step, if n>1: factR(n) = n * factR(n-1)
Base, if n< ...




