목차
1. 사용된 노드 구조체와 전역변수의 정의
2. 함수 설명
3. 함수의 흐름
4. 실행화면
5. 프로그램 소스
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);
}
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);
}
키워드
추천자료
- [자료구조] max heap
- [자료구조] BFS&DFS&BST
- 자바 자료구조 족보
- (자료구조) 스택을 이용한 후위연산 소스
- (자료구조) 단순 연결리스트를 이용한 삽입 & 삭제 & 검색 소스
- 힙 자료구조를 이용한 상입,제거(특정 토큰에 대해)
- 리스트 자료구조를 이용한 상입,제거(특정 토큰에 대해)
- [자료구조]Infix로 된 수식을 Prefix와 Postfix로 변환 시키는 프로그램입니다.(C언어)
- [자료구조] 배열을 이용한 다항식의 덧셈 곱셈 연산
- [자료구조, Algorithm] 외부정렬(External Sort) PPT version
- [자료구조] 연결 리스트를 이용한 오름차순 정리
- [자료구조] 피보나치수열 - int 데이타 사이즈를 넘어가는 결과값 계산 프로그램
- C언어 자료구조 Binary Search Tree (이진 탐색 트리)
- [자료구조] Linked List를 이용한 예약프로그램 - 버스예약 프로그램을 Linked_list로 구현한다