목차
1. 스택 공간의 구현
2. 함수 설명
3. 프로그램의 특징
4. 실행화면
5. 프로그램 소스
2. 함수 설명
3. 프로그램의 특징
4. 실행화면
5. 프로그램 소스
본문내용
------------------------//
void pop()
{
clrscr();
char temp[128]; //사용자 입력값을 받기위한 변수
char ch; //메뉴 선택에 사용
if(d_s.top_1 == BOTTOM_1-1 && d_s.top_2 == BOTTOM_2+1 ){ /*스택의 비어있는지 여부 확인*/
printf("\t\tWarring : Stack is Empty !!\n\t\tPress any key to back MainMenu");
getch();
main_menu(); //메인메뉴로 돌아감
}
gotoxy(18,5); //메뉴 구성
printf(">>>>>>>>> Report #1 Double Stack <<<<<<<<<\n\n\n");
printf("\t\t1. Delete From Stack1\n");
printf("\t\t2. Delete From Stack2\n");
printf("\t\t3. Back To MainMenu\n\n");
printf("\t\tSelect Number(1~3) : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch); //밑의 구문으로 정확한 번호를 받을수 있다.
while(1){
if(ch =='1'){ //첫번째 스택의가장 마지막에 받은 값을 보여주고
printf("\t\tPOP Success !\n\t\t%d is POP, Position of Top1 : %d\n\t\tPress any key to back MainMenu",d_s.stack[d_s.top_1],d_s.top_1-1);
d_s.stack[d_s.top_1] = NULL; //값을 삭제하고
d_s.top_1--; //top1 을 1감소 시키고
getch();
main_menu(); //메인메뉴로 돌아간다
break;
}
else if(ch == '2'){ //두번째 스택의가장 마지막에 받은 값을 보여주고
printf("\t\tPOP Success !\n\t\t%d is POP, Position of Top2 : %d\n\t\tPress any key to back MainMenu",d_s.stack[d_s.top_2],d_s.top_2+1);
d_s.stack[d_s.top_2] = NULL; //값을 삭제하고
d_s.top_2++; //top2 를 1증가 시키고
getch();
main_menu(); //메인메뉴로 돌아간다.
break;
}
else if(ch == '3'){
main_menu(); //메인메뉴로 돌아감
break;
}
else{ //잘못된 메뉴번호 선택시 재입력 요청
printf("\n\t\tInvalid Number Reselect : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch);
}
}
}
//-----------------------스택의 상태를 보여주는 함수------------------------//
void view()
{
clrscr();
gotoxy(18,5);
printf(">>>>>>>>> Stack Status View <<<<<<<<<");
gotoxy(12,8); //전체스택 그림
for(int i =1 ; i < (BOTTOM_2)/4 ; i++){
printf("-");
}
gotoxy(11,8);
printf("|");
gotoxy(8,7);
printf("Bottom1(%d)",BOTTOM_1);
gotoxy(60,8);
printf("|");
gotoxy(57,7);
printf("Bottom2(%d)",BOTTOM_2);
gotoxy((d_s.top_1/4)+10,9);
textcolor(0x0b); //top1 의 위치를 화살표로 표시
cprintf("↑\nTop1(%d)",d_s.top_1);
gotoxy((d_s.top_2/4)+10,9);
textcolor(0x0a); //top2 의 위치를 화살표로 표시
cprintf("↑Top2(%d)",d_s.top_2);
printf("\n\n\n\t\t\tPress any key to back MainMenu");
getch();
main_menu(); //메인메뉴로 돌아감
}
//-------------------------------메인 메뉴------------------------------//
void main_menu()
{
clrscr();
char temp[128]; //정확한 입력을 위해 사용
char ch; //위와 동일
gotoxy(18,5); //메뉴구성
printf(">>>>>>>>> Report #1 Double Stack <<<<<<<<<\n\n\n");
printf("\t\t1. Input Data(PUSH)\n");
printf("\t\t2. Delete Data(POP)\n");
printf("\t\t3. Stack Status View\n");
printf("\t\t4. End Program\n\n");
printf("\t\tSelect Number(1~4) : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch); //밑의 구문으로 정확한 번호를 받을수 있다.
while(1){
if(ch =='1'){ //PUSH 수행
push();
break;
}
else if(ch == '2'){ //POP 수행
pop();
break;
}
else if(ch == '3'){ //스택상태 보기
view();
break;
}
else if(ch == '4'){ //프로그램종료, 실제론 main 에서 종료
break;
}
else{ //잘못된 메뉴번호 선택시 재입력 요청
printf("\n\t\tInvalid Number Reselect : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch);
}
}
}
//----------------------------main()-----------------------------//
void main()
{
main_menu(); //메인메뉴 호출
exit(0); //프로그램 종료
}
void pop()
{
clrscr();
char temp[128]; //사용자 입력값을 받기위한 변수
char ch; //메뉴 선택에 사용
if(d_s.top_1 == BOTTOM_1-1 && d_s.top_2 == BOTTOM_2+1 ){ /*스택의 비어있는지 여부 확인*/
printf("\t\tWarring : Stack is Empty !!\n\t\tPress any key to back MainMenu");
getch();
main_menu(); //메인메뉴로 돌아감
}
gotoxy(18,5); //메뉴 구성
printf(">>>>>>>>> Report #1 Double Stack <<<<<<<<<\n\n\n");
printf("\t\t1. Delete From Stack1\n");
printf("\t\t2. Delete From Stack2\n");
printf("\t\t3. Back To MainMenu\n\n");
printf("\t\tSelect Number(1~3) : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch); //밑의 구문으로 정확한 번호를 받을수 있다.
while(1){
if(ch =='1'){ //첫번째 스택의가장 마지막에 받은 값을 보여주고
printf("\t\tPOP Success !\n\t\t%d is POP, Position of Top1 : %d\n\t\tPress any key to back MainMenu",d_s.stack[d_s.top_1],d_s.top_1-1);
d_s.stack[d_s.top_1] = NULL; //값을 삭제하고
d_s.top_1--; //top1 을 1감소 시키고
getch();
main_menu(); //메인메뉴로 돌아간다
break;
}
else if(ch == '2'){ //두번째 스택의가장 마지막에 받은 값을 보여주고
printf("\t\tPOP Success !\n\t\t%d is POP, Position of Top2 : %d\n\t\tPress any key to back MainMenu",d_s.stack[d_s.top_2],d_s.top_2+1);
d_s.stack[d_s.top_2] = NULL; //값을 삭제하고
d_s.top_2++; //top2 를 1증가 시키고
getch();
main_menu(); //메인메뉴로 돌아간다.
break;
}
else if(ch == '3'){
main_menu(); //메인메뉴로 돌아감
break;
}
else{ //잘못된 메뉴번호 선택시 재입력 요청
printf("\n\t\tInvalid Number Reselect : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch);
}
}
}
//-----------------------스택의 상태를 보여주는 함수------------------------//
void view()
{
clrscr();
gotoxy(18,5);
printf(">>>>>>>>> Stack Status View <<<<<<<<<");
gotoxy(12,8); //전체스택 그림
for(int i =1 ; i < (BOTTOM_2)/4 ; i++){
printf("-");
}
gotoxy(11,8);
printf("|");
gotoxy(8,7);
printf("Bottom1(%d)",BOTTOM_1);
gotoxy(60,8);
printf("|");
gotoxy(57,7);
printf("Bottom2(%d)",BOTTOM_2);
gotoxy((d_s.top_1/4)+10,9);
textcolor(0x0b); //top1 의 위치를 화살표로 표시
cprintf("↑\nTop1(%d)",d_s.top_1);
gotoxy((d_s.top_2/4)+10,9);
textcolor(0x0a); //top2 의 위치를 화살표로 표시
cprintf("↑Top2(%d)",d_s.top_2);
printf("\n\n\n\t\t\tPress any key to back MainMenu");
getch();
main_menu(); //메인메뉴로 돌아감
}
//-------------------------------메인 메뉴------------------------------//
void main_menu()
{
clrscr();
char temp[128]; //정확한 입력을 위해 사용
char ch; //위와 동일
gotoxy(18,5); //메뉴구성
printf(">>>>>>>>> Report #1 Double Stack <<<<<<<<<\n\n\n");
printf("\t\t1. Input Data(PUSH)\n");
printf("\t\t2. Delete Data(POP)\n");
printf("\t\t3. Stack Status View\n");
printf("\t\t4. End Program\n\n");
printf("\t\tSelect Number(1~4) : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch); //밑의 구문으로 정확한 번호를 받을수 있다.
while(1){
if(ch =='1'){ //PUSH 수행
push();
break;
}
else if(ch == '2'){ //POP 수행
pop();
break;
}
else if(ch == '3'){ //스택상태 보기
view();
break;
}
else if(ch == '4'){ //프로그램종료, 실제론 main 에서 종료
break;
}
else{ //잘못된 메뉴번호 선택시 재입력 요청
printf("\n\t\tInvalid Number Reselect : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch);
}
}
}
//----------------------------main()-----------------------------//
void main()
{
main_menu(); //메인메뉴 호출
exit(0); //프로그램 종료
}
키워드
추천자료
- [자료구조] max heap
- [자료구조] BFS&DFS&BST
- 자바 자료구조 족보
- (자료구조) 단순 연결리스트를 이용한 삽입 & 삭제 & 검색 소스
- (자료구조) 이중연결리스트를 이용한 삽입 & 삭제 & 검색 소스
- (자료구조) 큐를 이용한 환상형 연결리스트 삽입 & 삭제 소스
- (자료구조) 스레드 이진트리 중위운행 결과 소스
- 힙 자료구조를 이용한 상입,제거(특정 토큰에 대해)
- 리스트 자료구조를 이용한 상입,제거(특정 토큰에 대해)
- [자료구조]Infix로 된 수식을 Prefix와 Postfix로 변환 시키는 프로그램입니다.(C언어)
- [자료구조, Algorithm] 외부정렬(External Sort) PPT version
- SK텔레콤 자본구조발표자료
- C언어 자료구조 Binary Search Tree (이진 탐색 트리)
- C언어 자료구조 HashTable 해시테이블
소개글