栈是数据结构中很重要的一个结构,可以代替复杂的递归,所以他很重要~
这里主要讲的是如何实现,而是不是他用来做什么
栈是一个先进后出的结构,所以他只有一个口,这里即是插入的地方也是弹出的地方
下面我们来看一下他如何实现
首先我们看一下他的结构
他里面有一个datatype类型的指针,指向a,还有一个size和capacity
下面我们看一下他至少需要实现哪些函数
我们暂时先实现这些函数
首先我们看一下初始化
我们初始化首先我们需要开辟一段空间用来存储数据,所以我们暂时把存储的数据量定为4个datatype类型,所以这里我们的size给成0,而这里的最大容量capacity成了4 因为这里现在最大可以存储4个数据
下面我们看一下push
其实这里并不难, 我们前面实现过顺序表,所以我们也是在插入的时候需要判断size是否和capacity相等,相等的话就扩容,扩容也是和顺序表一模一样的,这里有不懂的可以看一下顺序表。
下面我们在看一下pop
我们在删除的时候,当然要从栈顶位置开始删除,所以我们这里需要判断一下栈是否为空empty,如果为空的话则不能删除,否则就可以删除,而这里的删除也只需要把size-- 就可以了。
下面我们看一下判断是否为空
这个判断是否为空确实也特别简单,如果size为0就返回true反之则返回 false
这里使用了三目运算符
下面我们看一下size就是当前栈有多少数据元素,只需要返回size就可以了
下面我们看一下top取栈顶元素
这个也挺简单的,如果为空则不能取
否则就返回size-1位置的元素
下面我们看一下销毁函数
这个如果a为空的话就不能销毁,否则就free掉a然后把capacity和size置为0即可
这个栈是很简单的,如果有不懂的可以看一下顺序表的实现,他们是特别相似的