|
struct data {
char name[20];
struct data *next; --> next는 요기 있는데요..
};
링크드 리스트는 자기참조 구조체를 이용해서..
각 노드들을 마치 체인처럼 연결하는 구조입니다.
싱글은 단방향 그러니까.. 보통 뒤쪽으로 한방향으로만 이동가능하고요.
double은 양방향 앞뒤로 이동가능한 형태입니다.
struct data {
char name[20];
struct data *next;
};
이행태를 보면.. struct data라는 구조체 안에 struct data *next로 자기 자신과
같은형태의 포인터가 선언되어 있습니다. --> 이 포인터를 자기참조구조체라고 합니다.
이 포인터가 바로 다음 노드를 point 하게 됩니다.
실제 사용시에 다음노드를 필요로 할경우..
current = current->next 이렇게하면..
current에 current->next 의 포인터가 들어가므로..다음노드로 변경이 되겠지요..
1->2->3->4->NULL 이렇게 되어 있는 곳에서..current가 1을 point하고 있었다면..
current= current->next 하면.. 2를 가리키게 됩니다.
한번 더 하면.. 3을 point 하게 되겠지요..
double을 하게되면..
struct data {
char name[20];
struct data *next;
struct data *prev; --> 이렇게 하나더 선언하고..
};
prev는 앞에것을 가리키게 됩니다.
current = current->prev 하게되면.. 현재위치가 2라고 하면.. 1로 이동되겠지요..
링크드 리스트는 매우 중요한 알고리즘입니다.
이걸 능수능란하게 다룰수 있으면..
C언어 실력도 향상되고.. 나중에 트리등을 배울때 쉽게 이해를 할 수 있습니다.
꼭, 잘 보아두시기 바랍니다.
김경래 님이 쓰신 글 :
: 죄송합니다.
: 제가 책을보고있는데요
: 링크드리스트인가 하고있거든요
: 그런데 current=current-> next;
: 예제에서 이렇게 된줄이있었습니다.
: 그런데.. current는 위에 선언되어있는데
: next라는것은 어디봐도 없었습니다.
: 그러면 next라는것은 원래 c안에 들어있는거 인가용??
:
: 그럼 즐거운하루되세용
|