-스택이란? 

FILO또는 LIFO 구조를 가짐. 요소의 삽입과 삭제가 자료구조의 한쪽 끝에서만 이루어지는 특징을 가진다. 

소프트웨어 분야에서 엄청나게 중요한 역할. 자동 메모리가 스택을 기반으로 동작. 네트워크 프로토콜도 스택을 기반으로 구성되어 있음.

 

종류

1. 배열을 이용하여  구현

2. 링크드 리스트를 이용해서 구현  

 

장점: 구현이 간단하다. 

단점: 동적으로 스택의 용량을 조절하기 어렵다. 

원리: 생성 초기 설정된 용량만큼의 노드가 한꺼번에 생성/ 최상위 노드의 위치를 나타내는 변수 이용해서 삽입, 제거 연산 실행 

 

 

-구현이 간단한게 장점인 만큼 다른 자료구조에 비해 코드 작성하는데 큰 어려움이 없었음 

 

1. 노드 정의 

 

 

2. 스택 정의 

 

다른 자료구조와는 다르게 여기에는 용량과 상위 노드 필드가 들어간다. 

 

3. 함수 선언 

 

4. 스택 생성 

6번줄에서 용량의 포인터를 노드의 크기로 설정.

 

5. 스택 삭제 

스택은 밥그릇이고, 노드를 밥이라고 생각해도 되나?

그럼 밥을 없애고, 밥그릇을 없앤다는 생각으로 노드먼저 없애고, 그다음 스택을 없앤다. 

 

6. 스택_노드 삽입 

스택에서 인덱스랑 포인터가 1차이 난다는 것 같은데 맞는지 모르겠다. 

포인터 +1 ==인덱스 인 것 같다. 

포인터는 0부터 시작, 인덱스는 1부터 시작?

 

7. 스택_노드 제거 

말은 제거인데, 뭔가 이해되기로는 맨 위에 있는 노드를 꺼내는 느낌?(말그대로 pop 하듯이)

 

8. 스택_탑 

AS_Pop과 같은 구조인 것 같다. 

 

9. 스택_크기

스택의 인덱스를 반환하면 그것이 곧 스택의 사이즈.

 

10. 스택_비우기

 

+ Recent posts