|
안녕하세요? 레조입니다.
new->next = head;는 struct data *의 타입을 new라는 struct속에 보관한다는
말이지요. 즉 링크드 리스트에서 링크 부분이라 보시면 됩니다.
struct를 보시면 데이타 부분으로 char name[20]을 사용했으며 각 데이타를
연결하는 링크 부분으로 struct data *next;라는 링크를 만들었네요.
여기서 링크란 의미는 다음 데이타의 위치를 가리키는 포인터(주소)를 의미합니다.
[데이타]-->[데이타]-->[데이타]
보통 링크드리스트를 이런식으로 표시하는데 데이타 부분은 char name[20]이며
다음 데이타의 위치를 가리키는 링크 부분이 화살표 부분이지요.
배열과 다른점이 링크 부분이 있다는 것이 다릅니다.
배열은 다음 데이타의 위치가 바로 다음 주소에 있다는 전제가 붙지만 링크리스트는
다음 데이타가 메모리 공간상에서 어디에 존재하는지 알 수 없기에 그 주소를
가리키는 자기자신의 타입인 포인터가 필요한 것이지요.
김경래 님이 쓰신 글 :
: struct data {
: char name[20];
: struct data *next;
: };
:
:
: typedef struct data PERSON;
: typedef PERSON *LINK;
: main()
: {
: LINK head = NULL;
: LINK new =NULL;
: LINK current = NULL;
:
: new = (LINK)malloc(sizeof(PERSON));
: new->next =head;
: head =new;
: strcpy(new->name, "Abigail");
: 이렇게 되어있는데요
: new->next=head; 이부분에서 new의 값이 next로 넘긴다는 말인가요?
: 아니면 그냥 뉴값을 가르키다가 넥스트값을 가르치는걸루 넘어갔다는말인가요?
: 제가 잘모르다보니.. 질문도 희안하게 합니다 ㅠ.ㅠ;;
:
: 지송합니다. 링크드리스트에 대해 잘아시는고수분 저위에 질문한거랑 대충 링크드리스트란
: 이런것이다 라고 설명좀 해주세요 ㅠ.ㅠ;;;
:
: 그럼 즐거운 하루되세요
|