티스토리 뷰
Stack 이란 ?
LIFO ( Last In First Out ) 형식의 자료구조

Stack 의 연산
- is_empty() : 스택이 비어있는지 검사한다.
- is_full() : 스택이 꽉 차있는지 검사한다.
- push( item ) : item 을 스택에 넣어준다.
- pop () : 스택의 가장 위의 항목을 제거한다.
Stack 구현
- Array ( 배열 )
- Linked List (연결리스트) ===> 연결리스트
1. Array ( 배열 )
전역변수로 구현 .
xxxxxxxxxx//-----전역변수로 구현typedef int element;element stack[MAX_SIZE];int top = -1;int is_empty(){ return top == -1;}int is_full(){ return top == MAX_SIZE;}void push(element item){ stack[++top] = item;}element pop(){ return stack[top--];}int main(){ push(1); push(2); push(3); printf("%d ",pop());//출력 : 3 2 1}
저장해야 하는 정보의 요소가 복잡한 구조 일 때 Struct 기반의 Array 로 구현
x
//헤더 위와 같음typedef struct{ int student_no; char name[MAX_STRING]; char address[MAX_STRING];}element;element stack[MAX_STACK_SIZE];int top = -1;//is_empty , is_full , push , pop 위의 함수랑 똑같음int main(){ element oi,oe; oi.student_no = 1; strcpy(oi.name,"우디"); strcpy(oi.address,"앤디 방"); push(oi); oe=pop(); printf("학번 : %d\n",oe.student_no); printf("이름 : %s\n",oe.name); printf("주소 : %s\n",oe.address);}
2. Linked List ( 연결리스트 )

노드들을 수직으로 나열하여 각 노드들이 아래의 노드를 가르키도록 하면 스택의 모양이 된다.
스택의 가장 위의 항목을 가르키는 top 변수는 전역변수로 두었다.
x
typedef int element;typedef struct Stack { element data; struct Stack *link;}Stack;Stack *top = NULL;void push(element item){ Stack *s = (Stack*)malloc(sizeof(Stack));//노드 동적할당 s->data = item; s->link = top; top = s;}element pop(){ Stack *removed = top; int data = top->data; top = top->link; free(removed); return data;}int main() { push(1); push(2); push(3); printf("%d ", pop()); printf("%d ", pop()); printf("%d ", pop());//출력 : 3 2 1}
'Programming > 자료구조' 카테고리의 다른 글
| [c/c++] 이중 연결 리스트 ( Doubly Linked List ) (0) | 2020.11.05 |
|---|---|
| [c/c++] 원형 연결 리스트 ( Circular Linked List ) (0) | 2020.11.05 |
| [c / c++ ] 단순 연결 리스트 ( Singly Linked List ) (0) | 2020.11.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- IT#백준#연구소#DFS
- it#일상#코로나#그만#백준#알고리즘#안드로이드#개발자
- IT#it#삼성#백준#경사로#코로나#화이팅
- 백준#알고리즘#코로나#IT#구슬탈출2#13460#공부#개인공부#독학#노력
- iT#it#백준#시험감독#코로나#이겨내요#대한민국#화이팅
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
