C++/자료구조(18)
-
스택 응용 1. 백 스페이스 키
2022.04.22 - [C++/자료구조] - 스택(stack) - 2 화면에 STACK 이라는 단어를 입력한다고 가정해보자. 오류로 인해 STA 다음의 문자를 V로 입력했다면 그 즉시 백 스페이스 키()를 치고 다시 C를 입력하게 될 것이다. 만약, 어떤 사람이 KYOTWREA 순서로 입력하였다면 화면에 보이는 최종 단어는 KOREA가 된다. 새로운 문자가 입력될때마다 현재 문자열 끝에 추가하되 백 스페이스가 입력되면 현재 문자열의 마지막 문자를 삭제해야 한다. 이렇게 하면 위 예의 문제는 K, KY, K, KO, KOT, KOTW, KOT, KO, ... 의 순으로 변하게 된다. 따라서 프로그램은 현재 문자열 끝에 데이터를 삽입하는 기능과 함께, 마지막 문자를 삭제할 수 있는 기능이 필요하다. 아래는..
2022.04.22 -
배열을 이용한 스택 구현
2022.04.22 - [C++/자료구조] - 스택(stack) - 2 배열을 이용한 스택 구현 스택에서 PUSH와 POP 연산은 탑에서 일어난다. 그림은 배열에서의 PUSH와 POP연산을 그림으로 표현한 것이다. 코드 구현 //array stack.h #define ARRAY_SIZE 100 typedef int element; //int형 자료형에 element라 별칭 붙임. class ArrayStack { public: ArrayStack(); ~ArrayStack(); void Push(element item); //item값을 스택에 삽입 int Pop(); //스택 탑의 데이터 값을 리턴함 bool IsEmpty(); //비어 있는지 확인 bool IsFull(); //꽉차 있는지 확인 pr..
2022.04.22 -
연결 리스트를 이용한 스택 구현
2022.04.22 - [C++/자료구조] - 배열을 이용한 스택 구현 연결 리스트를 이용한 스택 구현 위에서는 스택을 배열을 이용하여 구해보았다. 스택은 아래와 같이 연결리스트를 이용하여도 구현할 수 있다. 이러한 스택을 linked stack이라고 한다. 장점: 크기가 제한되지 않는다 단점: 동적 메모리 할당이나 해제를 해야 하므로 삽입이나 삭제 시간이 좀 더 걸린다. 각각 파란색으로 표시된 할당된 공간을 노드라 한다. 노드엔 data 값과 다음 노드의 주소값을 가리키는 포인터가 들어 있다 그림은 linked stack의 PUSH와 POP연산을 그림으로 표현한 것이다. . PUSH POP 삽입 연산에서는 먼저 동적 메모리 할당으로 노드를 만들고 이 노드를 첫 번째 노드로 삽입한다. 삭제 연산에서는 t..
2022.04.22 -
스택(stack) - 2
2022.04.18 - [C++/자료구조] - 스택(stack)-1 스택(stack)-1 스택(stack) 후입선출(LIFO: Last-In First-Out)한다. 다음처럼 스택에 A,B,C를 순서대로 입력했다가 하나를 삭제하면 맨 위에 놓여진 C가 삭제되고 다시 삽입하면 맨 위에 D가 놓여진다. 스택의 구조 스택 shine-learn.tistory.com 앞 내용 요약 스택 -> 후입선출(LIFO), 스택의 바닥부분을 bottom, 스택의 윗부분을 top이라 한다. 스택에 저장되는 것을 element라 한다. 스택의 연산 스택의 각 연산은 간단하게 구현할 수 있다. stack-empty stack push stack pop stack-empty > 스택이 비었다면 True, 비어있지 않다면 false..
2022.04.22 -
스택(stack)-1
스택(stack) 후입선출(LIFO: Last-In First-Out)한다. 다음처럼 스택에 A,B,C를 순서대로 입력했다가 하나를 삭제하면 맨 위에 놓여진 C가 삭제되고 다시 삽입하면 맨 위에 D가 놓여진다. 스택의 구조 스택에서의 입출력은 맨 위에서만 일어나고 스택의 중간에서는 데이터를 추가하거나 삭제할 수 없다. 스택의 구조는 다음과 같다. 스택에서 입출력이 이루어지는 부분을 top이라고 하고 바닥부분을 bottom이라고 한다. 스택에 저장되는 것을 element라 하고 element가 하나도 없는 스택을 empty라고 한다. 2022.04.22 - [C++/자료구조] - 스택(stack) - 2
2022.04.18 -
배열(array)
배열(array) 배열은 거의 모든 프로그래밍 언어에서 기본적으로 제공되는 자료형이다. 배열은 동일한 타입의 데이터를 한 번에 여러 개를 만들 때 사용된다. 예를 들어 6개의 정수를 저장할 공간이 필요한 경우 다음과 같이 6개의 정수형 변수를 선언하여야한다. . int list1, list2, list3, list4, list5, list6; 그러나 배열을 통하여 다음과 같이 선언할 수 있다. int list[6]; 6개의 정수를 저장할 공간을 만든 것이다. 배열의 인덱스 배열을 사용하면 "연속적인 메모리 공간"이 할당되고 인덱스(index) 번호를 사용하여 쉽게 접근이 가능하다. C++에서의 1차원 배열 배열은 변수 이름 끝에 [ ]을 추가하여 선언한다. [ ]안의 숫자는 배열의 크기이다. int li..
2022.04.11