スタックのシーケンスストレージ構造フレームワークの構築
スタックのシーケンスストレージ構造
アレイシミュレーション
こうぞうたい初期化スタック インスタック はスタックトップ要素 を返す.出桟 空であるか否かを判断する .戻りスタック内の要素数 クリアスタック 破壊
アレイシミュレーション
#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);
}