이중연결리스트에서 삽입부분 문제
쇼콜라데
이중연결리스트에서 삽입부분 문제삽입이 제대로 이루어지지를 않아서 여쭈어 봅니다.질문 내용 : //head의 prev는 head를 head의 next는 tail을
//tail의 prev는 head를 tail의 next는 tail을
//가리키는 형식으로 만들어진 이중연결리스트
#include stdio.h
#include stdlib.h
//노트 구조체 선언.
typedef struct _dnode
{
int key;//키값을 저장할 변수
struct _dnode* prev;//앞의 노드를 가리키는 포인터.
struct _dnode* next; //뒤의 노드를 가리키는 포인터.
}node;
node* head;//head와 tail선언부.
node* tail;
//head와 tail에게 메모리공간할당
void init_list(void)
{
head = (node*)malloc(sizeof(node));
tail = (node*)malloc(sizeof(node));
head-prev = head;
head-next = tail;
tail-prev = head;
tail-next = tail;
}
/*
node* insert(int k)
{
node* s;
node* i;
s = head-next;
while(s-key = k && s !=tail)
{
s=s-next;
}
i =(node*)malloc(sizeof(node));
i-key=k;
s-prev-next = i;
i-prev = s-prev;
s-prev = i;
i-next=s;
return i;
}
*/
//first를 앞의 노드. 삽입노드를 add. 뒤의 노드를 second로 설정.
node* insert(int k)
{
node* first;
node* second;
node* add;
first = head;
second = first-next;
while(second-key = k && second !=tail);
{
/*printf(first의 key : %d\n, first-key);
printf(first의 prev : %d\n, first-prev);
printf(first의 next : %d\n, first-next);
printf(second의 key : %d\n, second-key);
printf(second의 prev : %d\n, second-prev);
printf(second의 next : %d\n, second-next);*/
first = first-next;
second = first-next;
}
add = (node*)malloc(sizeof(node));
add-key = k;
first-next = add;
add-prev = first;
second-prev = add;
add-next = second;
return add;
}
void print()
{
node* printnode = head-next;
node* first;
node* second;
first = head;
second = first-next;
while(printnode != tail)
{
printf(printnode prev : %d\n, printnode-prev-key);
printf(printnode next : %d\n, printnode-next-key);
printf(%d\t, printnode-key);
printnode = printnode-next;
}
printf(\n);
}
void prologue()
{
printf(1.입력 2.삭제 3.찾기 4.출력 5.초기화 6.quit\n);
printf(-------------------------------------------\n);
}
void main(void)
{
int input=0,select=0;
prologue();
init_list();
do
{
printf(선택하세요 : );
scanf(%d, &select);
switch(select)
{
case 1 :
printf(입력할 숫자를 입력하세요 : );
scanf(%d, &input);
insert(input);
break;
case 2 :
break;
case 3 :
break;
case 4 :
print();
break;
case 5 :
system(cls);
prologue();
break;
case 6 :
break;
default :
printf(잘못 입력하셨습니다\n);
}
}while(select!=6);
}
녹색으로 된 부분이 교재에서 처리한 방식이구 빨간색으로 처리한것이 제가 단순연결리스트에서 했던 방식을 그대로 이용한
방법으로 코드를 작성한부분인데, 삽입이 전혀 이루어지질 않습니다. 교재에서 한것은 제대로 이루어지는데..
제가 한 방식에 어떠한 문제가 있을까요?
-
채꽃
아아.. 이런;; 생각해보니 틀린 코드가 아니었네요;.. -0-;;
-
가시내
어떻게 수정을 해야한다는거죠? 그코드 맞는거 같은데..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692483 | C언어 함수, Header | 떠나간그놈 | 2025-04-23 |
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 |