
易错 由t,3,组成的标识符中,只有以t和_开头的是合法的C语言标识符 如t3,t_3,_3t,t3
但是只有_3t,t3,t_3是能够从栈得到的


数组栈和链表栈相比,最大的好处是,通常不会出现栈满的情况

这个栈是从右向左存储,先让top指针向前移动一位,然后将元素存储在这个位置




栈顶指针h指向头结点


一个递归算法必须包括终止条件和递归部分




判别表达式中括号是否匹配:
从左到右扫描表达式,如果是左括号,入栈,如果是右括号,判断当前是否栈为空,如果为空,则右括号多于左括号,如果不为空,将一个左括号出栈, 最后,判断栈是否为空 ,如果为空,说明正确



队列,不允许对队列中的元素进行排序,不能取出最近进队的元素(最后进队的元素) ,
在队头元素之前插入元素,不是传统的队列
















如果是front + 1 == rear,说明front向后移动一位(出队一次)才是rear,这说明不是空的队列


将递归算法转换成对应的非递归算法时,需要使用栈来保存中间结果

D项是不对的,因为,最早插入的元素,只能被删除一次,之后这个最早插入的元素已经被删除了,无法继续删除







更合适的是,带有尾指针的单向循环链表
A:单向链表,如果带有头指针和尾指针,也很适合,插入和删除都可以在O(1)时间内完成
B:单行循环链表,如果带有尾指针,那么插入和删除都可以在O(1)时间内完成




InitStack(&S):初始化一个空栈;
StackEmpty(S);判断一个栈是否为空,如果栈为空则返回true,否则返回false
Push(&S,x):进栈,如果栈未满,将x加入使之成为新栈顶
Pop(&S,&x):出栈,如果栈S非空,弹出栈顶元素,并用s返回
GetTop(S,&s):读栈顶元素,如果栈S非空,用x返回栈顶元素
ClearStack(&S):销毁栈,并释放S占用的存储空间
&符号是C++特有的,用来表示引用,有的书上使用C语言中的指针类型*,也可以达到传址的目的

'+' 和 ( 的优先级关系为: + < (

注意:不是第一个元素节点,而是头结点