顺序表实现栈
顺序栈:栈的顺序存储结构,是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序 栈中的位置。
栈在数据结构中也是一个比较重要的结构,它有一个重要的特性是:先进后出。先入栈的元素最后出栈。具体结构如下:
在顺序栈中有三个元素,一个是存储数据的数组。还有一个用于存储当前顺序栈的有效大小。另外一个就是这个顺序栈的容量。当前最大能存储多少个元素。
typedef struct SeqStack
{
DataType *data;
size_t size;
size_t capacity;
}SeqStack;
为了可以使写的这个顺序栈还能被其它使用,就可以将当前栈存储的元素重定义一下,在以后需要存储其它类型的数据时可以方便修改。
typedef char DataType;
接下来就看一看具体的实现:
初始化顺序栈,先默认当前栈为可以存储三个元素的栈。
//初始化
void SeqStackInit(SeqStack *s)
{
assert(s);
s->size = 0;
s->capacity = 3;
//初始化当前数组有三个元素
s->data = (DataType*)malloc(sizeof(DataType)*3);
}
销毁顺序栈,只需将当前的size与capacity置零,并将存储的数组释放掉,一定记得要释放,因为数组的是我们人为开辟的空间,不释放会造成内存泄漏。
//销毁
void SeqStackDestroy(SeqStack *s)
{
assert(s);
if(s->data == NULL)
return;