スタックのシーケンスストレージ構造フレームワークの構築

9047 ワード

スタックのシーケンスストレージ構造
アレイシミュレーション
#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);
    }