栈 :只能在表尾进行插入(入栈)和删除(出栈)的数据结构(受到限制的线性表)
表尾比较特殊,我们一般把这个表尾叫做栈顶,另一端栈底,没有数据节点,则叫做空栈。
特点:后进先出 (LIFO),先进后出
顺序栈结构体设计:
struct Stack
{
第一个数据成员:ELEM_TYPE *base(指针类型,接收malloc从堆里申请的一整块连续的空间)
第二个数据成员: int top (用一个变量表示下一个数据的插入位置,也能表示有效值个数)
第三个数据 成员:int stack_size (存储当前容量大小)
};
程序实现:
Stack.h
#pragma once
//顺序栈的结构体设计:
#define INIT_SIZE 10
typedef int ELEM_TYPE;
typedef struct Stack
{
ELEM_TYPE* base;//一个指针,用来接收malloc从堆内申请的一整块内存
int top;//栈顶指针(和书上不一致,书上是指针类型,我们这里存的是数组下标,所以用int类型,也能达到指针的作用)
int stack_size;//存储当前