단순연결리스트 소스 질문
얀새
#includestdio.h
#includestring.h
#includestdlib.h
int count,count2;
int i = 0;
typedef struct book
{
int number;
char writer[20];
char name[50];
char company[20];
char date[10];
int money;
struct book *next;
}book;
head=(book*)malloc(sizeof(book));
end=(book*)malloc(sizeof(book));
book* make_node()
{
book *temp = (book*)malloc(sizeof(book));
temp-next = NULL;
return temp;
}//book리스트 초기화.
void check(int num, book *next)
{
if(next == NULL)
return ;
check(num, next-next);
if(num == next-number)
count++;
}
book *input(book* f)
{
FILE*fp=fopen(input.txt,wt);
book* n_node = (book*)malloc(sizeof(book));
while(1)
{
count = 0;
printf(도서번호 : );
scanf(%d, &n_node-number);
if(f == NULL)
{
break;
}
else
{
check(n_node-number, f);
}
if(count == 1)
{
printf(이미 존재하는 도서번호입니다. 다시 입력해주세요.\n);
}
else if(count == 0)
{
break;
}
}
fprintf(fp,%d,n_node-number);
printf(저자: );
scanf(%s,n_node-writer);
fprintf(fp, %s,n_node-writer);
printf(도서명: );
scanf(%s,n_node-name);
fprintf(fp, %s,n_node-name);
printf(출판사: );
scanf(%s,n_node-company);
fprintf(fp, %s,n_node-company);
printf(출판일: );
scanf(%s,n_node-date);
fprintf(fp, %s,n_node-date);
printf(가격: );
scanf(%d,&n_node-money);
fprintf(fp, %d\n,n_node-money);
n_node-next = f;
f = n_node;
fclose(fp);
printf(%d번째 도서 정보에 저장되었습니다.\n\n,i+1);
i++;
return f;
}//도서정보 입력함수.
void search_writer(char writer1[], book *next) // 저자검색
{
while(next!= NULL)
{
if(strcmp(writer1,next-writer)==0)
{
printf(%d %s %s %s %s %d\n, next-number, next-writer, next-name, next-company,next-date,next-money);
count2++;
break;
}
next = next-next;
}
}
void search_name(char name1[], book *next) // 저자검색
{
while(next!= NULL)
{
if(strcmp(name1,next-name)==0)
{
printf(%d %s %s %s %s %d\n, next-number, next-writer, next-name, next-company,next-date,next-money);
count2++;
break;
}
next = next-next;
}
}
void delete_node(int number1)
{
book* prev;
book* del;
for(prev=head; prev!=end; prev=prev-next)
{
if(prev-next-number == number1)
{
del=prev-next;
break;
}
}
prev-next = prev-next-next;
free(del);
}
void Print(book *next)
{
if(next == NULL)
return ;
Print(next-next);
printf(\n%d %s %s %s %s %d\n, next-number,next-writer,next-name,next-company,next-date,next-money);
}
int main(void)
{
book *f = NULL;
while(1)//무한루프.
{
char writer1[20], name1[50];
int choice,number1;
printf(도서 관리 프로그램\n\n);
printf(1. 도서입력\n);
printf(2. 저자별 검색\n);
printf(3. 제목 검색\n);
printf(4. 도서 삭제\n);
printf(5. 도서 목록 출력\n);
printf(6. 종료\n);
printf(메뉴를 선택하세요 : );
scanf(%d, &choice);
if(choice == 1)
{
printf(===도서입력 메뉴를 선택하셨습니다===\n);
printf(1. 도서입력\n);
printf(2. 상위메뉴\n);
printf(선택하세요:);
scanf(%d,&choice);
if(choice==1)
{
f = input(f);
}
else if(choice==2)
{
printf(상위메뉴로 돌아갑니다.\n);
}
else
{
printf(잘못입력하셨습니다. 상위 메뉴로 돌아갑니다.\n);
}
}
else if(choice == 2)
{
printf(===저자별 검색 메뉴를 선택하셨습니다===\n);
printf(저자명을 입력하세요:);
scanf(%s, writer1);
count2 = 0;
search_writer(writer1,f);
if(count2 == 0)
printf(\n찾는 결과가 없습니다.\n\n);
}
else if(choice == 3)
{
printf(제목별 검색 메뉴를 선택하셨습니다.\n);
&nprintf(제목을 입력하세요:);
scanf(%s, name1);
count2 = 0;
search_name(name1, f);
if(count2 == 0)
printf(\n찾는 결과가 없습니다.\n\n);
}
else if(choice == 4)
{
printf(도서 삭제 메뉴를 선택하셨습니다.\n);
printf(삭제하고 싶은 도서의 도서번호를 입력해주세요.\n);
printf(도서번호를 모르실 경우 상위메뉴의 도서정보출력 메뉴에서 확인가능합니다.\n);
scanf(%d,&number1);
delete_node(number1);
}
else if(choice == 5)
{
printf(전체 도서 목록 출력 메뉴를 선택하셨습니다.\n);
printf(1. 콘솔출력 2. 파일출력\n);
printf(출력방식을 선택하십시오:);
scanf(%d,&choice);
if(choice==1)
{
Print(f);
}
else
{
}
}
else if(choice == 6)
{
printf(프로그램을 종료합니다.\n);
break;
}
else
{
printf(잘못입력하셨습니다.\n);
}
}
return 0;
}단순연결리스트 소스인데요.
head,end변수 malloc처리한거랑
노드 삭제 함수에서 for문에 안에 조건문들이 알수없는 에러가뜨네요;;
도움부탁드립니다
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |