线性表模拟栈
栈是一类特殊的线性表,则可以用线性表模拟栈
//引入线性表 的 头文件 间接实现栈的顺序存储
#include "seqstack.h"
#include "seqlist.h"
//创建栈 == 创建线性表
SeqStack* SeqStack_Create(int capacity)
{
return SeqList_Create(capacity);
}
//销毁栈==销毁线性表
void SeqStack_Destroy(SeqStack* stack)
{
return SeqList_Destroy(stack);
}
//清空栈 == 清空线性表
void SeqStack_Clear(SeqStack* stack)
{
SeqList_Clear(stack);
}
//压栈 == 表尾插入元素
int SeqStack_Push(SeqStack* stack,void* item)
{
return SeqList_Insert(stack, item,SeqList_Length(stack));//尾部插入
}
//出栈 == 表尾拿出元素
void* SeqStack_Pop(SeqStack* stack)
{
return SeqStack_Delete(stack, SeqList_Length(stack)-1);
}
//获取栈顶元素
void* SeqStack_Top(SeqStack* stack)
{
return SeqList_Get(stack,SeqList_Length(stack)-1);
}
//获取栈的大小 == 获取线性表的实际长度
int SeqStack_Size(SeqStack* stack)
{
return SeqList_Length(stack);
}
//获取栈的容量 == 获取线性表的容量
int SeqStack_Capacity(SeqStack* stack)
{
return SeqList_Capacity(stack);
}
调用实现
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;
}