栈
一种只能在表尾进行插入和删除操作的线性表。
以下是我对栈的一些总结与体会:
一. 表尾即为栈底
二. 虽然只能在表尾进行插入和删除,但是我可以通过控制操作进行的时间点,改变出栈次序,来增加出栈的变化。
三. 栈底最好选择以下标为0的一端来作为,因为这样的话不会因为改变了首元素从而使整个栈有一个较大的变化。
四. 必须要注意的点是 如果栈的长度为五,但由于栈的栈类似于数组,其栈底下标为0,所以当栈为空栈时,其判定条件为-1。
五. 将一个元素出栈进栈,其时间复杂度都是0(1)。
两栈共享空间
一. 可以通过数组来使同类型的两个栈得到最大的空间利用。
二. 最大的难点还是在于下标是否正确。记住,当两个栈相见时,两个指针之间相差1。
三. 该数据结构是当一个栈增长,一个栈缩短时。比较好用。
运用到后缀表达式子时,需要注意的是,知道哪个元素进到哪个栈以及什么时候出来,是将正常式子转为表达式必不可少的知识点。
队列
一种只允许在一端进行插入操作,在另一端进行删除操作的线性表。
一. 允许插入的一端为队尾,允许删除的一端为队头。这就很符合平常人们排队时的习惯,先进来排就可以先出列,最后来的自然排在队伍最后。
二. 队头不一定一定要在下标为0的地方。
三. front指向队头元素,rear指向队尾元素的下一个位置。
四. 注意队列长度以及是否队列满,才好实现循环队列。
其实两种数据结构的本质都是线性表,一些小技巧只是让我们可以细分其作用场合。当然,概念不难,最难的还是记住一些抽象数据结构,以及将它们组合起来,解决一些具体问题,多练,才可以更好的理解。