무한루프에 빠집니다ㅠㅠ
어리버리
질문 제목 : 무한루프에 빠집니다ㅠㅠ원형 연결리스트문제인데 출력하면 무한루프에 빠져요 display2 함수부분이 잘못된것같은데 왜이러는건가요ㅠㅠ질문 내용 : 연결리스트 구현하는거 연습하고 있거든요실행결과가
30-20-10--------------------20-10-30-리스트끝길이는 3
10-30-리스트끝길이는2
30-리스트끝길이는1
리스트끝길이는0
리스트가 비어있어 삭제를 못함
이렇게 나와야 하는데 프로그램을 돌리면 자꾸 무한루프에빠집니다ㅠㅠvoid display2 함수부분이 문제인것같은데 어디를 고쳐야하나요ㅠㅠ?
#include stdio.h
#include stdlib.h
typedef int element;
typedef struct listnode {
element data;
struct listnode *link;
} listnode;
void error(char *message)
{
fprintf(stderr, %s\n, message);
exit(1);
}
listnode *create_node(element data, listnode *link)
{
listnode *new_node;
new_node = (listnode *)malloc(sizeof(listnode));
if(new_node == null) error(메모리 할당 에러);
new_node-data = data;
new_node-link = link;
return(new_node);
}
void display(listnode *head)
{
listnode *p;if(head == null) return;p = head;do {
printf(%d-, p-data);
p = p-link;
}while(p != head);
}
void insert_first(listnode **phead, listnode *node)
{
if(*phead == null) {
*phead = node;
node-link = node;
}
else {
node-link = (*phead)-link;
(*phead)-link = node;
}
}
void insert_last(listnode **phead, listnode *node)
{
if(*phead == null) {
*phead = node;
node-link = node;
}
else {
node-link = (*phead)-link;
(*phead)-link = node;
*phead = node;
}
}
void display2(listnode *head) // 리스트의 처음부터 끝까지 해당 데이터를 출력하는 함수입니다.
{
listnode *p = head;
while(p != null) {
printf(%d-, p-data);
p = p-link;
printf(리스트끝);
}
if( p == null)
printf(리스트끝);
}
void delete_first(listnode **head)
{
listnode *p;
if(*head == null)
printf(리스트가 비어있어 삭제를 못함\n);
else if((*head)-link == *head)
*head = null;
else {
p = (*head)-link;
(*head)-link = p-link;
}
}
int get_length(listnode *head)
{
listnode *p;
int count = 0;
if(head) {
p = head;
do {
count++;
p = p-link;
}while (p != head);
return count;
}
return count;
}
main()
{
listnode *list1 = null;insert_first(&list1, create_node(10, null));
insert_first(&list1, create_node(20, null));
insert_last(&list1, create_node(30, null));
display(list1);
printf(\n-----------------\n);
display2(list1); printf(\n);
printf(길이는 %d\n\n, get_length(list1));
delete_first(&list1); display2(list1); printf(\n);
printf(길이는 %d\n\n, get_length(list1));
delete_first(&list1); display2(list1); printf(\n);
printf(길이는 %d\n\n, get_length(list1));
delete_first(&list1); display2(list1); printf(\n);
printf(길이는 %d\n\n, get_length(list1));
delete_first(&list1);
}
-
권뉴
당연히 원형리스트이니까 null이 나올 수 없으니 무한루프가 빠지죠 전부 출력하실꺼면 리스트 갯수 구하는 함수로 출력하셔야할 듯
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695766 | 달팽이 배열 어디서 틀렸는지 모르겠습니다ㅠㅠ | 연분홍 | 2025-05-23 |
2695738 | fopen과fclose질문~~ (5) | 희선 | 2025-05-23 |
2695707 | 3의 배수 나타내기. (2) | 수리 | 2025-05-23 |
2695626 | 피보나치수열 과제 때문에 질문 드립니다. (6) | 옆집언니 | 2025-05-22 |
2695595 | 포인트공부중입니다 int형에서 4=1 인가요? (3) | 족장 | 2025-05-22 |
2695567 | 드라이브 고유번호를 가져오는 함수 (2) | 초코맛사탕 | 2025-05-21 |
2695533 | 음수의 산술변환! 질문이요 ㅠㅠ... (4) | 꽃여름 | 2025-05-21 |
2695506 | 구조체 배열 이용 도서목록 출력 프로그램 (1) | 가을귀 | 2025-05-21 |
2695450 | c언어 함수 질문이요.... | 이슬비 | 2025-05-20 |
2695403 | VirtualAlloc함수 및 메모리 질문 | 크리에이터 | 2025-05-20 |
2695355 | c언어 for함수 | 미쿡 | 2025-05-19 |
2695327 | 안녕하세요 제가 이번에 좀 큰 프로그램을.. | 악당 | 2025-05-19 |
2695295 | mutex동기화의 thread기반 채팅 서버소스 질문입니다 | 그루터기 | 2025-05-19 |
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |