이중연결리스트로 주소록짜는부분에서 삭제가 되지않습니다.
한추렴
질문 제목 : 이중연결리스트 삭제함수가 되지않음질문 요약 :이중연결리스트 삭제부분중 가운데노드 삭제가 되지않습니다
빨간색 주석부분이 읽혀지지않습니다.그런데 삭제할 노드가 마지막일 경우는 삭제가 됩니다;;;질문 내용 :
#includestdio.h
#includemalloc.h
#includestring.h
typedef struct address_
{
struct address_ *prev;
char name[30];
char num[30];
char address[50];
struct address_ *next;
}node; //구조체에 typedef를 선언해 node를 구조체명으로 사용
void address_add(node *);
void address_del(node *);
void address_print(node *);
void address_search(node *);
main()
{
node *add;
int s;
add=(node *)malloc(sizeof(node));
add-prev=null;
add-next=null;while(1)
{
printf(1:주소록 추가 2:주소록 삭제 3:주소록 검색 4:주소록 출력 9:종료\n);
scanf(%d,&s);
if(s == 9)break;
switch(s)
{
case 1:
address_add(add);
break;
case 2:
address_del(add);
break;
case 3:
address_search(add);
break;
case 4:
address_print(add);
break;
}}
}
void address_add(node *add)
{
node *pmove;
node *move;
node *newnode;
newnode=(node *)malloc(sizeof(node));
newnode-next=null;if(add-next == null)
{
add-next=newnode;
newnode-prev=add;
printf(이름을 입력하시오\n);
scanf(%s,newnode-name);
printf(번호를 입력하시오\n);
scanf(%s,newnode-num);
printf(주소를 입력하시오\n);
scanf(%s,newnode-address);
printf(%s %s %s\n,newnode-name,newnode-num,newnode-address);
printf(%d\n%d\n%d\n%d\n,add,newnode-prev,add-next,newnode);
}
else
{
move=add;
while(move-next-next !=null)
{
move=move-next;
}
pmove=move-next;
move-next-next=newnode;
printf(이름을 입력하시오\n);
scanf(%s,newnode-name);
printf(번호를 입력하시오\n);
scanf(%s,newnode-num);
printf(주소를 입력하시오\n);
scanf(%s,newnode-address);
newnode-prev=pmove;
printf(%s %s %s\n,newnode-name,newnode-num,newnode-address);
printf(%d\n%d\n%d\n%d\n,newnode-prev,move-next,newnode,move-next-next);}
}void address_del(node *add)
{
char name[30];
int x;
node *pmove;
node *move;
move=add;
if(move-next == null)
{
printf(삭제할 주소목록이 없습니다\n);
}
if(move-next != null)
{
&printf(삭제할 이름을 입력하시오\n);
scanf(%s,name);
while(move-next != null)
{
x=strcmp(move-next-name,name);
if(x != 0)
{
move=move-next;
}
if(x == 0)
{if(move-next-next == null)
{
free(move-next);
move-next=null;
}break;
/*
if(move-next-next != null)
{
move-next-next-prev=move;
pmove=move-next-next;
free(move-next);
move-next=pmove;
}break;
*/
}if(move-next == null)break;
}
}}
void address_search(node *add)
{
char name[30];
int x;
node *pmove;
node *move;
move=add;
if(add-next == null)
{
printf(검색 할 주소목록이 없습니다\n);
}
if(add-next!=null)
{
printf(검색 할 이름을 입력하시오\n);
scanf(%s,name);
while(move-next != null)
{
x=strcmp(move-next-name,name);
if(x != 0)
{
move=move-next;
}
if(x == 0)
{printf(%s\n,move-next-name);
printf(%s\n,move-next-num);
printf(%s\n,move-next-address);
}
if(x == 0)break;
}
}
}
void address_print(node *add)
{
node *move;
move=add;
if(move-next == null)
{
printf(출력할 주소록이 없습니다\n);
}
while(move-next != null)
{
printf(%s\n,move-next-name);
printf(%s\n,move-next-num);
printf(%s\n,move-next-address);
move=move-next;
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2698012 | 2~9가아닌수 | 아놀드 | 2025-06-13 |
2697980 | for에 gets함수를 넣으니까 왜 반복이 안되죠 ㅜ (2) | 펴라 | 2025-06-12 |
2697952 | 2차배열과 함수문의^^; | VanilLa | 2025-06-12 |
2697924 | 다차원 배열 질문있습니다 | 두동 | 2025-06-12 |
2697893 | 정올 :: 기초다지기 a9007 배열7 (문제가 이상함 -_-) | 흰두루 | 2025-06-12 |
2697862 | Unable......... 지정된 파일을 찾을 수 없습니다!! (1) | Creator | 2025-06-11 |
2697761 | 그러니까여제말은... (2) | 새론 | 2025-06-10 |
2697737 | 정올 문제좀 풀어보신분~ | 레오 | 2025-06-10 |
2697709 | rand함수 질문좀요! (6) | 가막새 | 2025-06-10 |
2697683 | C언어 변수뒤 표시가 이해안되는게 있습니다. | 소미 | 2025-06-10 |
2697660 | 껍데기딜 만들고 난후 어느핫키 누르면 코드검색이라도 뜨고 그다음 무반응 해결좀 (2) | 움찬 | 2025-06-09 |
2697634 | c언어로 감성사전 만들기! (1) | 도란도란 | 2025-06-09 |
2697605 | 이 함수좀... | agine | 2025-06-09 |
2697574 | 배열 기본적인질문 (3) | 민트향 | 2025-06-09 |
2697549 | 배열 초기화 (4) | 나리 | 2025-06-08 |
2697465 | 수다님...^^ (2) | 가론 | 2025-06-08 |
2697432 | 서버 만드는 함수에서 궁금한게있어요~ | 파랑 | 2025-06-07 |
2697401 | 열혈강의 문제오류 (1) | 꿈 | 2025-06-07 |
2697374 | 기초적인 C언어 프로그래밍 입니다. | 얼 | 2025-06-07 |
2697341 | 좌우대칭 문제인데 Q가 입력되면 종료가 되야하는데 되지않습니다 | 무지개 | 2025-06-07 |