자료구조/스택(Stack) (3) 썸네일형 리스트형 [자료구조] 링크드 리스트(Linked List)를 기반으로 스택(Stack) 구현하기 링크드 리스트를 기반으로 스택 구현하기 스택 구현에서 링크드 리스트가 배열보다 좋은 점은 두 자료구조의 근본적인 차이인 용량에 제한을 두지 않아도 된다는 점입니다. 스택의 크기를 필요할 때 줄일수도, 늘릴수도 있는것이죠. 하지만 인덱스를 활용하여 노드에 접근할 수 없습니다. 따라서 노드는 자신의 위에 위치하는 노드에 대한 포인터를 갖고 있어야 합니다. -각 층을 구성할 노드와 스택의 구조체 typedef struct tagNode{ char* Data; struct tagNode* NextNode; } Node; 문자열이 저장된 자료형의 포인터와 위의 노드를 가리키는 포인터를 갖습니다. 이는 Heap에 저장되어야 합니다. typedef struct tagLinkedListStack{ Node* List.. [자료구조] 배열(Array)을 기반으로 스택(Stack) 구현하기 배열을 기반으로 스택 구현하기 배열을 이용한 스택은 용량을 동적으로 변경하는 비용이 크다는 단점이 있지만, 구현이 간단하다는 장점도 있습니다. 배열 기반의 스택은 각 노드를 동적으로 생성하고 제거하는 대신, 스택 생성 초기에 프로그래머가 부여한 용량만큼의 노드를 한꺼번에 생성합니다. 그 후 최상위 노드의 위치를 나타내는 변수를 두고 삽입과 제거 연산을 수행합니다. -각 층을 구성할 노드와 스택의 구조체 typedef struct tagNode{ ElementType Data; } Node; 노드의 위치는 배열의 인덱스로 알 수 있기 때문에 데이터만 담고 있으면 됩니다. typedef struct tagArrayStack{ int Capacity; //용량 int Top; //최상위 노드 Node* No.. [자료구조] 스택(Stack) - 코딩밥상 스택의 개념 스택에서 데이터 입/출력은 오로지 스택의 꼭대기에서만 이루어집니다. 따라서 스택 가운데에 있는 데이터를 삭제하거나 새로운 데이터를 입력하는 일은 메우 번거로운 과정을 거쳐야합니다. 예를들어 하노이의 탑과정을 거쳐야 하는것이죠. 정리하면, 스택에서는 가장 마지막에 들어간 데이터가 제일 먼저 나오고(Last In First Out) 가장 먼저 들어간 데이터는 가장 나중에 나옵니다.(First In Last Out) 언듯보면 비효율적이게 보일수 있지만, 활용도는 무궁무진합니다. 변수를 선언한 후에 수명주기가 끝나면 변수를 자동으로 제거하는 자동메모리 또한 스택으로 구현되어 있습니다. 우리가 "지역 변수는 스택(자동 메모리)에 할당된다"라고 하는 이유입니다. 그 외에도 거의 대부분의 네트워크 프로토.. 이전 1 다음