본문 바로가기
WORK/Sotfware

[C] linked list [1] 선행 학습

by KANG Stroy 2018. 9. 5.
728x90
728x90

linked list 하면 일단 Head가 나오고 Tail이 나온다. 갑자기 머리가 나오고 꼬리가 나와 버린다. 


사전 지식이 없으면 이해가 아닌, 암기가 된다. 재미있게 접근하기 위해서 사전에 선행 학습은 무엇이 있을까? 라는 고민을 했다. 


크게 3가지로 구성 된다고 본다. 


1. 메모리 구조


2. 포인트 


3. 구조체 


로 구성이 될 수 있다. 


변수 자체가 메모리를 의미 한다. 메모리는 기억이다. 기억을 저장 하는 부분이다. 

그 변수들의 모임들이 구조체의 모임이다. 같이 움직이고 싶은 마음들이 있는 것이다. 


구조체를 설명하면 성적을 많이 이야기 한다. 하나의 이름에 여러가지 과목이 하나로 뭉쳐 다니기 때문이다. 독자적으로 돌아 다니는것을 봐주기 싫은 거다. 


여기서 구조체와 포인트 부분을 이해가 필요 하다. 


typedef struct lists{


char *name;

int grade;

struct lists *next;


}list;


링크드 리스트의 기본 구성이다. 

typedef도 알아야 한다. 

그리고 구조체를 알아야 하는 것이다. 

구조체 안에 포인터도 있다. 이런 기본 구성이 유지 되고 있는데, 그냥 링크드 리스트를 공부하기 시작하면 C 언어 공부, 알고리즘 공부는 물건너 가는것이다. 공부 하기 싫어 진다. 

C언어 접어라. 그런데 하고 싶은 마음이 있다면 포인터와 구조체를 공부 한다. 

구조체를 공부하면서 하나더 공부해야 할 부분이 있다. 

struct lists *next;

이 부분이다. 

자기참조구조체(self-referential structure) 이다. 이것이 함수라면 무한 루프가 되면서 컴퓨터는 뻗어 버린다. 여기서 사용하는 구조체는 자기 자신을 가리킨다. 


728x90

댓글