基本概念
一类特殊的线性表 仅能在一端进行操作
栈顶(Top):允许操作的一端
栈底(Bottom):不允许操作的一端
有线性(前驱后继)关系
栈底固定 先进栈的在栈底
操作
创建栈 销毁栈 清空栈 进栈(也叫入栈 压栈) 出栈 获取栈顶元素 获取栈的大小
#ifndef _MY_STACK_H_
#define _MY_STACK_H_
typedef void Stack;
Stack* Stack_Create();
void Stack_Destroy(Stack* stack);
void Stack_Clear(Stack* stack);
int Stack_Push(Stack* stack, void* item);
void* Stack_Pop(Stack* stack);
void* Stack_Top(Stack* stack);
int Stack_Size(Stack* stack);
#endif
代码
//创建栈
SeqStack* stack = NULL;
stack = SeqStack_Create(10);
if(stack==NULL)
{
return ;
}
//压栈
for(int i=0;i<5;i++)
{
a[i]=i+1;
SeqStack_Push(stack,&a[i]);
}
cout<<"Capacity:"<<SeqStack_Capacity(stack)<<endl;
cout<<"length:"<<SeqStack_Size(stack)<<endl;
cout<<"top:"<<*(int *)SeqStack_Top(stack)<<endl;
//出栈
while(SeqStack_Size(stack) >0)
{
int tmp = *((int *)SeqStack_Pop(stack);
cout<<"tmp:"<<tmp<<endl;
}