더블 스택의 구현
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

더블 스택의 구현에 대한 보고서 자료입니다.

목차

1. 스택 공간의 구현

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); //프로그램 종료
}
  • 가격2,000
  • 페이지수13페이지
  • 등록일2007.09.10
  • 저작시기2002.10
  • 파일형식한글(hwp)
  • 자료번호#427662
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니