stack 질문이요
조롱목
C언어 잘 모르는데.....이론은 공붛면 알겠는데 소스를 짜려고 하면 엄두가 안납니다ㅠㅠ
정수입력을 받아 입력된 정수를 저장할 수 있는 크기 10인 스택을 구현한다.
?xml:namespace prefix = o /?xml:namespace prefix = o /?xml:namespace prefix = o /
키보드에서 정수로 된 입력을 받아 스택에 push를 통해 입력을 하며 스택의 크기만큼 입력이 된 경우 (스택이 가득 찬 경우) 스택이 가득찼다는 메시지를 출력하고 바로 스택에서 pop()을 통해 모든 원소를 추출하며 추출과 동시에 그 원소들을 출력하도록 한다. 모든 원소를 출력하여 스택이 empty 상태가 되면 프로그램을 종료한다.
스택은 크기가 5로 하며 정수가 저장되도록 한다. 위 기능을 수행하기 위해 위에 열거한 함수들(push(), pop(), isEmpty(), isFull(), clear())을 모두 구현하고 이를 이용하여 위 기능을 수행하는 프로그램을 작성하도록 한다.
다음은 스택에서 push()의 한 예이다. 이를 참고하여 각 함수들을 작성하라. pop()의 경우 포인터를 매개변수로 써서 매개변수에 pop한 값을 저장함을 유의하시오.
?xml:namespace prefix = v /?xml:namespace prefix = v /?xml:namespace prefix = v /void push(int n)
{
if(!isFull()){ // if s// if stack is not full, add data.
stack[sp] = n; // sp is stackpointer.
sp++;
}
}
void pop(int *n)
{
if(!isEmpty()){ // if stack is not empty, pop a data. *n = stack[sp--];
}
}
다음은 실행 예이다.
(프로그램 실행 후 키보드 입력)
1
2
3
4
5 ß 10을 입력함과 동시에 아래 라인들이 즉시 출력됨.
5
4
3
2
1 ß 프로그램 종료
d