'스택삭제 함수'에 해당되는 글 1건

stack

Last In First Out(후입 선출의 형태)


#define MAX_STACK_SIZE 100
typedef struct{
           int key;
}element;

element stack[MAX_STACK_SIZE];
int top = -1;
로 정의 되어있을때.

stack에로의 삽입 함수
void add(int* top,element item)
{/*전역스택에 item을 삽입*/
  if(*top>=MAX_STACK_SIZE-1){
   stack_full()'
   return;
}
 stack[++*top];
}

stack으로부터 삭제 함수
element delete(int* top)
{
   if(*top == 1)
   return stack_empty(); //오류키를 반환
 return stack[(*top)--];
}

설명: 스택으로 삽입 할때는 스택을 하나증가시킨후 삽입
        삭제시는 나중에 들어간 item을 빼낸후 스택을 하나 감소 시킨다.

일반적인 배열스택프로그램



동적연결된 스택(linked list로 구현된 스택)

#define MAX_STACKS 10
typedef struct
{
 int key;
}element;
typedef struct stack* stack_pointer;
typedef struct stack{
 element item;
 stack_pointer link;
};
stack_pointer top[MAX_STACKS];



삽입 함수

void add(stack_pointer *top,element item)
{//스택의 top에 원소를 삽입
 stack_pointer temp=(stack_pointer)malloc(sizeof(stack)); //메모리동적할당
 if(IS_FULL(temp)){
  fprintf(stderr,"메모리풀\n");
  exit(1);
 }
 temp->item=item;
 temp->link=*top;
 *top=temp;
}

삭제함수

element delete(stack_pointer,element item)
{//스택으로부터 원소를 삭제
 stack_pointr temp=*top;
 element item;
 if(IS_EMPTY(temp)){
  fprintf(stderr,"스텍이 비었음\n");
  exit(1);
 }
 item=temp->item;
 *top=temp->link;
 free(temp); // 메모리반환
 return item;
}

연결된 스택 프로그램
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,