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

목차

1. 사용된 노드 구조체와 전역변수의 정의

2. 함수 설명

3. 함수의 흐름

4. 실행화면

5. 프로그램 소스

본문내용

np-1]);//노드 삭제함수 호출
break;
}
else if(ch == '3'){
main_menu();
break;
}
else{ //잘못된 메뉴번호 선택시 재입력 요청
printf("\n\t\tInvalid Number Reselect : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch);
}
}
printf("\n\n아무키나 누르시면 메인메뉴로 이동합니다.");
getch();
main_menu();
}
//>>>>>>>>>>>>>>>>>>서브메뉴 3번 노드에 데이터삽입/삭제<<<<<<<<<<<<<<<<<<<<< void sub_menu_3(){
if(head == NULL){
printf("리스트가 생성되지 않았습니다.\n메인메뉴에서 1번을 선택하여 리스트를 생성하세요");
getch();
main_menu();
}
clrscr();
char temp[128];//정확한 입력을 위해 사용
char ch;//위와 동일
int np;//역시 동일
int data;//데이터 받기용 변수
gotoxy(12,5);//메뉴구성
printf(">>>>>>>>> Report #3 Double Linked List <<<<<<<<<\n\n\n");
printf("\t\t1. 노드에 데이터 입력하기\n");
printf("\t\t2. 노드에 데이터 삭제하기\n");
printf("\t\t3. 메인메뉴로 돌아가기\n");
printf("\t\tSelect Number(1~3) : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch); //밑의 구문으로 정확한 번호를 받을수 있다.
while(1){
if(ch =='1'){
printf("현재 노드의 갯수는 %d 개입니다.\n몇번째 노드에 데이터를 입력하시겠습니까?(1~%d) : ",node_count,node_count);
fflush(stdin);
gets(temp);
sscanf(temp,"%d",&np);
printf("데이터를 입력하세요(숫자) : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%d",&data);
ins_data(node[np-1],data); //데이터 입력
break;
}
else if(ch == '2'){
printf("현재 노드의 갯수는 %d 개입니다.\n몇번째 노드의 데이터를 삭제하시겠습니까?(1~%d) : ",node_count,node_count);
fflush(stdin);
gets(temp);
sscanf(temp,"%d",&np);
del_data(node[np-1]); //데이터 삭제
break;
}
else if(ch == '3'){
main_menu();
break;
}
else{ //잘못된 메뉴번호 선택시 재입력 요청
printf("\n\t\tInvalid Number Reselect : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch);
}
}
printf("\n\n아무키나 누르시면 메인메뉴로 이동합니다.");
getch();
main_menu();
}
//>>>>>>>>>>>>>>>>>>서브메뉴 4번 노드상태 보기<<<<<<<<<<<<<<<<<<<<< void list_status()
{
clrscr();
gotoxy(12,5);//메뉴구성
printf(">>>>>>>>> Report #3 List Status View <<<<<<<<<\n\n\n");
printf("\t\t현재 총 노드의 갯수는 %d 개 입니다.\n",node_count);
for(int i =0 ;i < node_count;i++){
printf("\t\t%d 번째 노드에 있는 데이터 : %d\n",(i+1),node[i]->data);
}
printf("\n\n아무키나 누르시면 메인메뉴로 이동합니다.");
getch();
main_menu();
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>메인 메뉴<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< void main_menu()
{
if(node_count >= MAXLIST){
printf("만들수 있는 최대 노드수를 초과했습니다. 노드를 삭제해주세요");
}
clrscr();
char temp[128]; //정확한 입력을 위해 사용
char ch; //위와 동일
gotoxy(12,5); //메뉴구성
printf(">>>>>>>>> Report #3 Double Linked List <<<<<<<<<\n\n\n");
printf("\t\t1. 리스트 생성\n");
printf("\t\t2. 노드 삽입/삭제\n");
printf("\t\t3. 노드에 데이터 입력/삭제\n");
printf("\t\t4. 리스트상태 보기\n");
printf("\t\t5. 프로그램 끝내기\n\n");
printf("\t\tSelect Number(1~5) : ");
fflush(stdin);
gets(temp);
sscanf(temp,"%c",&ch); //밑의 구문으로 정확한 번호를 받을수 있다.
while(1){
if(ch =='1'){
sub_menu_1();//해당 서브메뉴 호출
break;
}
else if(ch == '2'){
sub_menu_2();//해당 서브메뉴 호출
break;
}
else if(ch == '3'){
sub_menu_3();//해당 서브메뉴 호출
break;
}
else if(ch == '4'){//해당 함수 호출
list_status();
break;
}
else if(ch == '5'){ //프로그램종료, 실제론 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
  • 페이지수12페이지
  • 등록일2007.09.10
  • 저작시기2002.10
  • 파일형식한글(hwp)
  • 자료번호#427661
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니