栈和队列:
顺序栈:
分配一块空间让S.base指针指向这块空间,再让S.top也指向这块空间,让栈的空间等于设置的最大空间
S.top-S.base指的是相邻指针相差多少个元素
delete是释放指针所指的空间,这个指针就变成了一个野指针,任意指向一个地址,并不是删除了这个指针,所以要在最后加上指针=NULL,避免其乱指
*S.top指的是对top指针所指的那一块空间进行操作
要注意,链栈的next域保存的是前一个元素的地址
递归需要用链栈,当执行到循环的出口时,需要将返回值传递回来
注意这边的头指针和尾指针是int类型的
出入队是通过指针的移动
真溢出指的是队列里面确实没有空间了,而假溢出指的是队列里面还有空间但尾指针已经指向最后一个元素了,因为队列只能在队尾插入,所以这边没办法再插入了,如何解决呢?
因为使用循环链表无法判断是队空还是队满,这边我们采用少用一个元素空间的方法进行判断
这边有可能出现Q.rear-Q.front是负数的情况,也就是Q.rear在Q.front下面的情况,所以要加上一个队列的长度再进行求模运算
链栈的next域保存的是前一个元素的地址,链队的next保存的还是后一个元素的地址,不要搞混了