오늘 배울것은 연결리스트와 이중연결리스트에요



첫번째로 이것을 알아야하는 이유를 배워봅시다



우리가 어떤 데이터를 사용할때 그 데이터의 용량을 몰라요

그렇기 때문에 무작정 배열로 할당하려면 막연하기도하고

생성하더라도 쓸데없이 클수도있고 사용하는 영역이 변동이 생길수있어요



따라서 동적으로 원하는만큼만 자동적으로 할당해주는 연결리스트가 필요해요





이제 개념적인 설명을 해봅시다



어떤 데이터를 가르키는 포인터를 하나 만들어서 구조화 해봅시다

그 데이터를 가르키는 주소는 1개만 할당하고

주소의 사용은 1번밖에 못하기 때문에 끝납니다



그림으로 설명해보겠습니다



ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ+ㅡㅡㅡㅡㅡㅡㅡ

head ->   (주소1 )      l      (주소2 )

  데이터1                     l       데이터2

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ+ㅡㅡㅡㅡㅡㅡㅡ

그렇기때문에 우리는 주소를 가르킬 포인터를 하나 더 만들거에요



struct node{

int num;

node* next;

}



이렇게 다음 주소를 가르킬 포인터를 만들었어요



자 그렇다면 그 구조를 그림으로 표현해봅시다







ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

head ->   (주소1 )             next2         ->   (NULL)

               데이터1             데이터2            

               Next1       ->      (주소2 )

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ





이렇게 연결이 완료 됐어요 이런식으로 끝을 판별할수있게 끝의 next에는 항상 null을 가르키게 만들어야돼요



이런식으로 동적 할당해주면 리스트와 스택 큐를 구현할수있어요



다음강의는 이중연결리스트 입니다

담배한대씩 피고오세요