일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 로지스틱 회귀
- 딥러닝
- CPP
- Kaggle
- 백준
- C++
- OpenGL
- CNN
- neural network
- recommender system
- 추천 시스템
- Computer Vision
- 파이썬
- 머신러닝
- 그래픽스
- logistic regression
- cs231n
- Regularization
- pre-trained
- 비용함수
- 신경망
- petal to metal
- SGD
- 컴퓨터 그래픽스
- 인공지능
- Vision
- 컴퓨터 비전
- SVM
- Unsupervised learning
- Support Vector Machine
- Today
- Total
kwan's note
3,4주차 -stack queue 본문
수강일시 : 2020.09~ 2020.12
출처: 고려대학교 정연돈 교수님 자료구조 강의
stack이란 아래서부터 쌓고 마지막으로 쌓은것부터 꺼내는 방식의 자료구조.
Stack 의 ADT
작동예시
push(green)
push(blue)
Pop()
push(red)
array 를 이용하여 stack 을 구현한다면
초기에 stack의 최대 갯수를 stacksize로 정의하고
int stack[stacksize]; 로 선언한다.
int top=-1;으로 초기화하고
void push(int arr[],int data,int top)
{
arr[++top]=data;
}
int pop(int arr[])
{
return arr[top--];
}
등과 같은 방법으로 구현한다.
하지만 여기서 단점은 stack의 size가 정해지므로 정해진 stacksize를 초과하는 데이터를 저장할 수 없고 array를 선언할 때 generic하게 선언할 수 없다는것이 단점이 된다. 따라서 링크드리스트를 이용해 작성한다면 이러한 단점을 극복할 수 있다.
Queue는 stack과 다르게 먼저 들어온 자료가 먼저 나가는 방식이다.
Queue의 ADT는 다음과 같다.
queue또한 stack과 마찬가지로 array와 list를 이용하여 구현할 수 있다.
array로 구현하는 queue의 단점도 stack에서와 마찬가지로 정해진 값을 초과할 수 없고 generic한 queue를 만들 수 없다는것이다.
거기에 더해 queue의 경우 데이터를 삽입 삭제(enqueue dequeue)하다보면 계속 이동하게 되므로 front가 rear와 가까이 이동해서 사용하면 할수록 점점 가용범위가 줄어드는 추가적인 단점이 발생한다.
이러한 단점을 queue에서는 circular queue를 만듦으로서 해소할 수 있다.
따라서 stack과 queue모두 일반적인 쓰임새에서는 list를 통해 구현해야 하지만
1.자료형이 정해져있고
2.사용환경이 제한적이어서 stack 과 queue의 갯수가 정해져있는경우
두가지를 모두 충족하는 경우 array를 통해 구현할 수 있다.
'Computer Programming > Data Structure -Korea Univ' 카테고리의 다른 글
9-11주차- heap, graphs (힙과 그래프) (1) | 2020.12.28 |
---|---|
6-8주차 트리(tree, bst, avl tree) (0) | 2020.12.28 |
2주차-recursion (재귀함수) (0) | 2020.12.27 |
1주차 - 자료구조 개요 (0) | 2020.12.27 |
자료구조 강의 (0) | 2020.12.27 |