스택
-
연결리스트로 구현한 스택 스택을 구현하는 데 있어서 연결리스트를 활용할 수 있습니다. 연결리스트로 스택을 구성하면 배열로 구성된 스택에 비해 크기의 제한이 없다는 장점이 있지만 반대로 메모리를 동적으로 할당하므로 할당과 해제에 따른 시간이 소모된다는 단점이 있습니다. 삽입 연산 연결리스트로 구현된 스택에 노드를 삽입하는 연산의 경우 다음 두 순서의 변경 사항이 필요합니다. 1. temp(삽입할 노드)의 link를 top으로 할당. 2. top을 temp로 할당. 이때 순서가 변경되어서는 안됩니다. 만약 top을 temp로 할당하는 과정을 먼저 수행하면 temp의 link가 가리킬 위치를 알 수 없게됩니다. 삭제 연산 연결리스트로 구현된 스택에 노드를 삭제하는 연산의 경우 다음 두 순서의 변경 사항이 필요..
[자료구조] 연결리스트를 활용한 스택 구현연결리스트로 구현한 스택 스택을 구현하는 데 있어서 연결리스트를 활용할 수 있습니다. 연결리스트로 스택을 구성하면 배열로 구성된 스택에 비해 크기의 제한이 없다는 장점이 있지만 반대로 메모리를 동적으로 할당하므로 할당과 해제에 따른 시간이 소모된다는 단점이 있습니다. 삽입 연산 연결리스트로 구현된 스택에 노드를 삽입하는 연산의 경우 다음 두 순서의 변경 사항이 필요합니다. 1. temp(삽입할 노드)의 link를 top으로 할당. 2. top을 temp로 할당. 이때 순서가 변경되어서는 안됩니다. 만약 top을 temp로 할당하는 과정을 먼저 수행하면 temp의 link가 가리킬 위치를 알 수 없게됩니다. 삭제 연산 연결리스트로 구현된 스택에 노드를 삭제하는 연산의 경우 다음 두 순서의 변경 사항이 필요..
2021.05.06 -
스택을 응용한 예시로는 괄호 검사, 스택의 응용1 : 괄호 검사 프로그램 괄호의 종류에는 대괄호 [ , ] 중괄호 { , } 소괄호 ( , ) 가 있습니다. 프로그램을 구현하기 위해 다음 조건을 만족해야 합니다. 1. 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다. 2. 같은 괄호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야 한다. 3. 괄호 사이에는 포함 관계만 존재한다. 검사가 필요해 보이는 잘못된 괄호 사용의 예시 (a(b) a(b)c) a{b(c[d]e}f) 알고리즘 문자열에 있는 괄호를 차례대로 조사하면서 왼쪽 괄호를 만나면 스택에 삽입하고, 오른쪽 괄호를 만나면 스택에서 삭제한 후 짝이 맞는지를 검사합니다. 이 때, 스택이 비어 있으면 조건1 또는 조건2 등을 위배하게 되고 괄호의 짝이..
[자료구조] 스택을 응용, 활용한 프로그램스택을 응용한 예시로는 괄호 검사, 스택의 응용1 : 괄호 검사 프로그램 괄호의 종류에는 대괄호 [ , ] 중괄호 { , } 소괄호 ( , ) 가 있습니다. 프로그램을 구현하기 위해 다음 조건을 만족해야 합니다. 1. 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다. 2. 같은 괄호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야 한다. 3. 괄호 사이에는 포함 관계만 존재한다. 검사가 필요해 보이는 잘못된 괄호 사용의 예시 (a(b) a(b)c) a{b(c[d]e}f) 알고리즘 문자열에 있는 괄호를 차례대로 조사하면서 왼쪽 괄호를 만나면 스택에 삽입하고, 오른쪽 괄호를 만나면 스택에서 삭제한 후 짝이 맞는지를 검사합니다. 이 때, 스택이 비어 있으면 조건1 또는 조건2 등을 위배하게 되고 괄호의 짝이..
2021.04.10 -
스택(Stack) 쌓아놓은 더미, 즉 메모리가 쌓인 더미 영역을 말합니다. 스택의 특징 후입선출(LIFO:Last-In First-Out)로써 가장 최근에 들어온 데이터가 가장 먼저 나갑니다. 스택 추상 데이터 타입 (ADT) 객체: 0개 이상의 원소를 가지는 유한 선형 리스트 연산: 매개변수 s는 스택을 의미 ▪ create(size) 최대 크기가 size인 공백 스택을 생성한다. ▪ is_full(s) if(스택의 원소수 == size) return TRUE; else return FALSE; ▪ is_empty(s) if(스택의 원소수 == 0) return TRUE; else return FALSE; ▪ push(s, item) if( is_full(s) ) return ERROR_STACKFUL..
[자료구조] 스택 Stack스택(Stack) 쌓아놓은 더미, 즉 메모리가 쌓인 더미 영역을 말합니다. 스택의 특징 후입선출(LIFO:Last-In First-Out)로써 가장 최근에 들어온 데이터가 가장 먼저 나갑니다. 스택 추상 데이터 타입 (ADT) 객체: 0개 이상의 원소를 가지는 유한 선형 리스트 연산: 매개변수 s는 스택을 의미 ▪ create(size) 최대 크기가 size인 공백 스택을 생성한다. ▪ is_full(s) if(스택의 원소수 == size) return TRUE; else return FALSE; ▪ is_empty(s) if(스택의 원소수 == 0) return TRUE; else return FALSE; ▪ push(s, item) if( is_full(s) ) return ERROR_STACKFUL..
2021.04.10