栈的实现
一.概念与结构
栈,是一种特殊的线性表,只允许在固定的一端进行插入删除元素的操作,进行数据插入删除操作的一端称为栈顶,另一端称为栈底。栈中的数据遵循后进先出的原则。
如图一个杯子一样遵循严格的顺序。
二.栈的实现
2.1栈的数据结构
指向栈顶的top,栈的容量大小capacity,以及栈arr。
下面我们要实现的功能
2.2初始化与销毁
首先判断传来的指针是否为空,然后将数组至为null,top和capacity至为0。
销毁若arr不为空则free,将其至为null,top和capacity至为0。
2.3入栈与出栈
出栈只需判断栈是否为空,top➖➖。
入栈,首先判断是否为空。若空间足够则直接插入数据,top++。若空间不够则需要重新开辟空间,用newcapacity接收,若空间为0则开辟4,若不为0就开辟两倍的空间。随后将数组增容,用tmp来接收,realloc newcapacity个空间。
最后将tmp给arr,newcapacity给capacity。
2.4取栈顶元素
返回arr【top】然后top➖➖。