栈的顺序存储结构
数组模拟
#define MAX_SIZE 1024
#define SEQSTACK_TRUE 1
#define SEQSTACK_FALSE 0
结构体
typedef struct SEQSTACK{
void* data[MAX_SIZE];
int size;
}Seqstack;
- 初始化栈
Seqstack* Init_Seqstack(){
Seqstack* stack=(Seqstack*)malloc(sizeof(Seqstack));
for(int i=0;i<MAX_SIZE;i++){
stack->data[i]=NULL;
}
stack->size=0;
return stack;
}
- 入栈
void Push_Seqstack(Seqstack* stack,void* data){
if(stack==NULL){
return;
}
if(data==NULL){
return;
}
if(stack==MAX_SIZE){
reutrn;
}
stack->data[stack->size]=data;
stack->size++;
}
- 返回栈顶元素
void* Top_Seqstack(Seqstack* stack){
if(stack==NULL){
return;
}
if(stack->size==0){
return NULL;
}
return stack->data[stack->size-1];
}
- 出栈
void Pop_Seqstack(Seqstack* stack){
if(stack==NULL){
return;
}
if(stack->size==0){
return;
}
stack->data[stack->size-1]==NULL; //置空
stack->size--;
}
- 判断是否为空
int IsEmpty(Seqstack* stack){
if(stack==NULL){
return -1;
}
if(stack->size==0){
return SEQSTACK_TRUE;
}
return SEQSTACK_FALSE;
}
- 返回栈中元素个数
int Size_Seqstack(Seqstack* stack){
return stack_size;
}
- 清空栈
void Clear_Seqstack(Seqstack* stack){
if(stack==NULL){
return;
}
for(int i=0;i<stack->size;i++){
stack->data[i]=NULL;
}
stack->size=0;
}
- 销毁
void Free_Seqstack(Seqstack* stack){
if(stack==NULL){
return;
}
free(stack);
}