제목을 거창하게 적어 보았습니다. 왜? 거창하게 생각해 보려고 그랬습니다. 다들 뻔한 이야기를 하기에 나도 뻔한 이야기를 해 보려고 적어 보았습니다. 내가 잡은 개념 입니다. 생각이 다를 수는 있습니다. ㅎ
포인트는 뭐다? 라는 식으로 간단 명료하게 적어 보고 싶었습니다.
Linked List는 연결 구조 입니다.
아래의 그림 처럼 Data가 있고 Next 라는 링크를 가집니다.
구조체를 좀 알아야 합니다.
struct pnode
{
char data; // or int data;
struct pnode *next;
};
아래와 같이 압축? 귀찮음을 느끼는 분들을 위한 부분 입니다. 어떻게 쓰나 똑같습니다. 좀 덜 적는다 뿐이지
typedef struct pnode
{
char data; // or int data;
NODE *next;
}NODE;
여기서 이 노드의 개념이 잡혀야 합니다.
뭐든지 초기화 그리고 첫사랑 첫.. 홈런볼? 첫... 하여튼 처음이 중요합니다. 여기서 노드라고 칭해지는 부분에는 첫 부분에는 Head가 와야 합니다.
아래 사진을 보면 복잡해 보입니다. next의 next의 next의 ... 무한 next 끝에는 NULL로 끝납니다.
첫 시작은 head라는 부분이 꼭 와야 합니다.
그래서 head를 NULL로 만들어 놓고 시작한다 생각을 해야 합니다.
그리고 우리는 링크드 리스트 라고 하지 않았습니까? 연결을 하는 겁니다. 고양이가 좁은 공간을 빠져 나갈때는 머리가 통과 되면 뒤는 쉽게 빠져 나간다는 이야기를 합니다. 뚱뚱한 고양이는 시도를 안하겠지요..
head를 만들었으니 우리는 그다음에 올 녀석을 링크 즉 연결을 하기 위한 분비를 합니다.
그것이 next 입니다. 다른거 다 잃어 버려도 머리만 딱 잡고 있으면 그 다음 녀석들은 next로 뽑아 낼 수 있습니다.
head는 기준점이 되는 것이지요..
NODE* head;
NODE* newl = NULL;
NODE* end = newl;
head=NULL;
add(10);
void add(int data)
{
newl = new newl;
newl->data = data; // 위의 10 값을 넣자
if( head->next != NULL)
{
head = newl; // 처음 head에는 연결 된 놈들이 없으니 링크를 주자
}
else
{
while(newl->next != NULL) // 2번째 부터 꼬리 찾기를 하자
{
newl = newl->next; // 꼬리를 찾았다.
}
end->next = newl; // 마지막을 준비 하자
}
end = newl; // 저장하자
end->next = NULL; // 끝을 알리자
}
정리가 잘 되어 있는 블로그가 있어서 추가 하였습니다.
https://opentutorials.org/module/1335/8821
'WORK > Sotfware' 카테고리의 다른 글
[Linux] 우분투 버전 역사 (0) | 2017.10.20 |
---|---|
[C++] 정렬 방식을 그림으로 이미지 화 (0) | 2017.08.30 |
[LINUX] virtualbox putty 접속방법 (0) | 2017.05.15 |
STM8L15x PWM 만들기 (0) | 2017.04.27 |
FreeRTOS 관련 건. (0) | 2017.04.25 |
댓글