Linked List 질문이 있습니다....
이퓨리한나
제가 링크드 리스트를 배우고있는데요 질문이 있습니다.
다음 소스가 제가 생각하는 것처럼 나오질 않네요 왜 그런지 설명좀 해주세요
--------------------------------------------------------------------------
#include stdio.h
#include stdlib.h
typedef struct _node{
int iNumber;
struct _node *next;
}NODE;
void InputNumber(NODE *);
NODE *InputNode(NODE *, NODE *);
void OutputNumber(NODE *);
int main(){
int i=0;
NODE *start, *now;
start = (NODE *)malloc(sizeof(NODE));
start-next = NULL;
now = start;
for(i=0;i3;i++){
InputNumber(now);
}
OutputNumber(start);
return 0;
}
void InputNumber(NODE *now){
NODE temp;
printf(숫자는 : );
scanf(%d, &temp.iNumber);
now = InputNode(now, &temp);
}
NODE *InputNode(NODE *target, NODE *aNode){
NODE *New;
New = (NODE *)malloc(sizeof(NODE));
*New = *aNode;
New-next = target-next;
target-next = New;
return New;
}
void OutputNumber(NODE *start){
NODE *now;
for(now =start-next;now;now = now-next){
printf(%d\n, now-iNumber);
}
}
실행결과 제가 생각하는 실행결과
--------------------------------------------------------------------
숫자는 : 10숫자는 : 10
숫자는 : 20 숫자는 : 20
숫자는 : 30숫자는 : 30
30 10
20 20
1030
--------------------------------------------------------------------
왜냐하면 처음에 start로 시작해서 next로 이어지는 주소를 따라서
출력하기 때문에 10- 20- 30으로 넣었으면 똑같지 출력되야 하는거 아닌가요???
-
가온누리
일단 링크드 리스트 put 자체가 잘못되었습니다. 입력시 InputNumber에 now를 넘겨주는데 이 경우 새 값은 계속 now, 즉 처음 start 노드의 다음 값으로 입력이 됩니다. 이 부분부터 수정을 하셔야겠네요. 그리고 InputNumber 함수가 왜 2개가 있는지도 모르겠네요. 그냥 하나로 만드는게 좋습니다.