티스토리 뷰
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#it#백준#시험감독#코로나#이겨내요#대한민국#화이팅
- it#일상#코로나#그만#백준#알고리즘#안드로이드#개발자
- 백준#알고리즘#코로나#IT#구슬탈출2#13460#공부#개인공부#독학#노력
- IT#백준#연구소#DFS
- 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 |
29 | 30 | 31 |
글 보관함