C++(56)
-
스택 응용 2. 후위 표현의 연산
중위표현 : 5+7처럼 연산자(Operator)가 피연산자(Operand)의 가운데에들어가는 표현이다. 후위표현 : 5 7 +처럼 연산자가 뒤로 가는 표현이다. 우리가 수식을 프로그램 할 때에는 중위표현을 사용하지만 이 표현은 나중에 컴파일러에 의해 후위표현으로 변환되어 실행된다. (2+5)*3-1 의 후위표현은 2 5 + 3 * 1 - 가 된다. 이 후위표현을 가지고 연산을 실행하면 다음과 같다. 언제라도 피 연산자가 들어오면 스택에 push한다. 연산자가 들어오면 스택에 쌓인 피연산자 두 개에 대해 해당 연산을 가하고 그 결과를 다시 스택에 푸시한다. 단, 그림처럼 먼저 팝 된 피연산자가 연산자의 오른쪽으로 가게 해서 연산을 가한다. 후위 연산의 연산과정을 코드로 나타내면 다음과 같다. #includ..
2022.04.23 -
스택 응용 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 -
재귀함수로 팩토리얼 구하기
2022.04.10 - [C++] - 예외처리 #include using namespace std; int fact(int ); int main(void) { int n; cin>>n; try { cout
2022.04.21