Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Homework #4
• 스택(Stack) : 마지막에 삽입된 것이 먼저 제거(LILO, Last-in, First-out)되는 데이터구조로서, 모든 데이터 삽입과 삭제는 탑(Top)이라 불리는 리스트 한쪽 끝에서 이루어진다. (http://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D 등 인터넷참조)
• 큐 (Queue) : 마지막에 삽입된 것이 먼저 제거(FIFO, First in, first out)되는 데이터 구조로서, 데이터 삽입은 back라 불리는 한쪽 끝에서, 데이터 삭제는 front이라는 다른쪽 끝에서 이루어진다. (http://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0 등 인터넷 참조)
Top
스택
큐
• 다양한 type의 데이터를 저장할 수 있는 스택 템플릿과 큐 탬플릿을 구현하라.
• 기본적인 스택과 큐의 규칙만 지켜지고 기본 함수들 (push, pop, enqueue dequeue등등)만 구현되면 데이터 저장 부분은 어떤 형태로 구현하던 상관없음 (예: 배열로구현, 링크드 리스트로 구현 등등).
• STL에서 미리 구현된 것을 사용 금지.
• 스택과 큐의 기본 정의 및 설명은 아래 및 인터넷 참조
Homework #4
• 큐와 스택에 임의의 integer 10개를 enqueue와 push를 한 다음 dequeue 와 pop을
하면서 나온값을 출력하라.
• char st[] = “In computer science, a stack is a particular kind of abstract data
type or collection in which the principal (or only) operations on the collection
are the addition of an entity to the collection”; 를 선언하고 글자 하나하나를
enqueue, push 한 다음 dequeue, pop을 하여 결과를 출력하라.
• 이전에 구현한 fraction 클래스를 include해서 fraction 객체 3개 (1/3, 3/5, 10/3)를
만들어 다시 enquene, push와 dequeue, pop 을 하여 결과를 출력하라.
Homework #4
• 앞에서 읽으나 뒤에서 읽으나 똑같은 단어나 문장을 회문이라 한다. 예를 들어,‘ 기러
기’,‘ 토마토’,‘ 소주만병만주소’등가운데문자를중심으로대칭적으로 서있는문자열을
말한다.
• 사용자 입력으로 문장을 받아 스택과 큐를 사용해 이 문장이 회문인지 검사하는 구문
을 구현하라.
• 알고리즘 힌트: 들어오는문자열을 순서대로읽어서 스택과 큐, 두 가지자료구조에넣
고각각의 자료구조에서하나씩 끄집어 내서 비교. 스택에서튀어 나오는 것은 가장 마
지막에 들어간 문자인 반면, 큐에서 나오는것은 가장먼저 들어간 문자이므로 계속 끄
집어 내면서 둘을 계속 비교해 나가면 회문 검사 가능.
• Main 함수에서는 적절히 입력문과 출력문을 만들어 입력문이 회문인지 아닌지를 검
사하여 결과 출력.
Homework #4
• 10진수를 2진수로 바꾸는 일반적인 알고리즘은 다음과 같다.
Read a number
Iteration (while number is greater than zero)
Find out the remainder after dividing the number by 2
Print the remainder
End the iteration
• 위 알고리즘은 아직 불완전하다. 왜냐하면 위 알고리즘과 같이 reminder 를 순서대
로 취하면 그 결과값은 자릿수가 반대로 된 결과값이기 때문이다. 예를 들어 23의 2
진수를 위 알고리즘대로 구하면 11101 이 되는데, 사실 정답은 이 수를 뒤집은
10111이다.
• 위 알고리즘에 스택을 이용한 코드를 추가하여 정확한 답이 나오도록 하라.
• Main 함수에서는 사용자 입력으로 integer 값을 하나 받고 자기가 구현한 알고
리즘으로 이 수의 2진수 값을 출력하는 코드를 만들어 알고리즘을 test하라.