본문 바로가기

Programming Study/자료구조

스택(stack)

스택의 정의

  - 선형 리스트에서 데이터의 삽입과 삭제를 한 방향에서 이루어지도록 한 것. 

 

 

스택의 기본연산 

 

스택의 생성 

#define STACK_SIZE 100

typedef struct

{

    char *item1[20]

    int item2;

    ·······

}Element;

 

Element stack[STACK_SIZE];

int top = -1      //스택을 공백 상태로 초기화시키기 위해서 top의 값을 -1로 설정

 

스택의 포화/공백 상태 검사 함수

bool IsFull(int top)

{

    if(top >= STACK_SIZE-1) return true;   //포화상태

    else return false;

}

 

bool IsEmpty(int top)

{

    if(top == 1) return true;    //공백 스택 상태

    else return false;     //공백이 아닌 스택 상태

}

 

스택의 삽입 / 삭제 함수 

 void Push(int *top, Element item)                // 삽입

{

    if(IsFull(*top)    //스택의 포화 상태 검사

    {

        stack_full();    //포화상태인 경우

        return;

    }

    stack[++(*top)] = item;    //top의 값을 증가 후 item 삽입

}

 

Element Pop(int *top)                                // 삭제

{

    if(IsEmpty(*top))    //스택의 공백 상태 검사

    {

        return stack_empty();    //공백 상태인 경우 오류키 반환

    }

    return stack[(*top)--];    //값을 반환 후 top 감소

}

 

'Programming Study > 자료구조' 카테고리의 다른 글

리스트 - 원형 연결 리스트(Circular Linked List)  (0) 2014.09.02
리스트 - 단순 연결 리스트(Simply Linked List)  (0) 2014.09.02
리스트(List)  (0) 2014.09.02
큐(Queue)  (1) 2014.09.01
자료구조의 구분  (0) 2014.09.01