데이터 구조 --- 창고 의 기본 조작

14423 단어 notesDataStructure
                  -Unit3    - 

창 고 는 중요 한 선형 구조 로 후진 선 출 의 특성 을 가지 고 있다.요 소 는 스 택 상단 에서 만 눌 러 올 수 있 고 스 택 상단 에서 만 팝 업 할 수 있 습 니 다.
우 리 는 먼저 창고 의 구 조 를 살 펴 보 자.
typedef struct stac
{
    int *top;
    int *bottom;
    int stacksize;
}Stack;

top 은 스 택 지붕 이 고 위 치 는 맨 위 요소 보다 한 자리 높 습 니 다.bottom 은 창고 밑 이 고 위 치 는 맨 아래 요 소 를 가리킨다.스 택 이 비어 있 을 때 top = bottom 이 있 습 니 다.
창고 에는 다음 과 같은 몇 가지 상용 조작 이 있다.
void InitStack(Stack &S);//     
void DestroyStack(Stack &S);//   
void ClearStack(Stack &S);//   
int StackEmpty(Stack S);//       
int StackLength(Stack S);//     
void GetTop(Stack S,int &e);//      
void Push(Stack &S,int e);//    
void Pop(Stack &S,int &e);//    

스 택 초기 화 실현:
void InitStack(Stack &S)//    
{

    S.bottom=(int *)malloc(SIZE*sizeof(int));
    if(S.bottom==NULL) exit(1);
    S.top=S.bottom;
    S.stacksize=SIZE;
}

압 입 원소:
void Push(Stack &S,int e)//  
{
    if(S.top-S.bottom>=SIZE)//     
    {
        S.bottom=(int *)realloc(S.bottom,(ADD_SIZE+S.stacksize)*sizeof(int));
        if(S.bottom==NULL) exit(1);
        S.top=S.bottom+S.stacksize;
        S.stacksize=S.stacksize+ADD_SIZE;
    }
    *S.top++=e;//top         e,  top    1 
}

팝 업 요소:
void Pop(Stack &S,int &e)//  
{
    if(S.top==S.bottom)//   
    {
        printf("Error");
        return;
    }
    e=*--S.top;//top      ,         ,         e
}

창고 꼭대기 원소 획득:
void GetTop(Stack S,int &e)//      (   Pop()  )
{
    if(S.top==S.bottom)
    {
        printf("Error");
        return ;
    }
    e=*(S.top-1);//    Pop  
}

창고 파괴:
void DestroyStack(Stack &S)//   
{
    free(S.bottom);
    S.top=NULL;
    S.bottom=NULL;
    S.stacksize=0;
}

창고 의 청소
void ClearStack(Stack &S)//   
{
    S.top=S.bottom;//           ,               
}

스 택 이 비어 있 는 지 판단 하기:
int StackEmpty(Stack S)//       
{
    if(S.top==S.bottom)
    {
        return 1;//1   
    }
    return 0;//0    
}

창고 길이:
int StackLength(Stack S)
{
    return (S.top-S.bottom);
}

좋은 웹페이지 즐겨찾기