stack 이란
stack 구조는 한 쪽끝은 막혀 있고 한 쪽 끝은 뚫려 있는 구조이다. 사실은 실제로 이런 구조가 있는 것이 아니라 이렇게 사용을 한다. 처음 전산학을 공부할 때 스택 스택해서 이런 구조가 실제적으로 존재 하는 줄 알았다.^^
한쪽 끝이 막혀 있는 구조이므로 막히지 않은 쪽에서 자료의 삽입과 삭제가 발생한다. 일상생활에서 스택구조를 보이는 것은 택시의 동전꼽이,책을 쌓을때 등등의 구조에서 볼수 있다.
배열을 사용해서 스택구조를 구현할 수 있다.
stack[6]
아래 그림은 3 개의 데이터가 미리 스택에 삽입된 상태이다. 스택구조에서는 한쪽 끝의 제일 위에서 삽입과 삭제가 발생하므로 제일 끝을 가르키는 변수가 존재하고 이를 보통 top 이란 변수명으로 사용한다.
삽입시
4 번째 위치에 데이터를 삽입하면 되므로 , top 변수를 하나 증가후 새로은 데이터를 삽입. top=top+1;
stack[top]=data;
삭제시
3 번째 데이터를 임시변수로 top 변수를 1 감소 하면 되므로
data=stack[top];
// stack top 에 있는 자료를 data 로 top=top-1;
overflow ,underflow 검사
- overflow: 자료를 꽉찬 경우 데이터를 삽입하려고 할 때
- underflow: 자료가 빈 경우 데이터를 삭제 하려고 할 때
스택에서의 넣는(insert) 동작을 push 라 하고 , 빼는(delete) 동작을 pop라 한다.
push
if (top >=5)
{
printf("스택이 넘칩니다");
exit(0);//강제 종료
}
top=top+1;
stack[top]=top;
pop 동작
if (top <=0)
{
printf("스택에 빼낼 데이터가 없습니다");
exit(0);
}
data=stack[top];
top=top-1;
자주 묻는 질문
- 스택의 초기 상태는 1 번째 부터 데이터를 넣는다고 하면 top 값을 0 으로 만들고 시작하면 되고 ,
- 삭제시에 데이터를 지우지 않고 top 값만 감소하는 이유는 다시 새로운 데이터가 push 될 때 전 데이터를 덮어쓰기 때문
'MISCELLANEOUSNESS' 카테고리의 다른 글
[UNIX/LINUX] FTP 기본 명령어 (0) | 2007.09.15 |
---|---|
[UNIX] UNIX 기본 명령어 (0) | 2007.09.15 |
[Queue] 큐의 구현 (0) | 2007.09.15 |