2015년 7월 29일 수요일

Linked List

List Class 를 C 를 이용해 만들어보았다.


(연필로 하나 씩 짜보니 많은 코딩 실력에 향상에 도움을 주었다 . 이렇게 보니 뿌듯ㅎㅎ)

벡터는 자료를 삽입, 추가 , 제거 하는데 모두 시간복잡도가 n이지만,

리스트는 자료 삽입, 추가, 제거가 벡터와 달리 복잡도 1이라는 용이한점을 가진다.

이유는 리스트의 구조에 있다 . 밑의 그림을 보면 리스트를 이해하기 쉽다.

먼저 리스트의 구조는 위의 사진과 같다.

헤드라는 포인터가 가장첫번째 자료를 갖는 Node 형 구조체를 가르킨다.

Node 형 구조체는 다음(next) 과 전(previous) Node 형 구조체와 연결 할 수있는 포인터를 

가지고 있다. 

다음 사진은 새로운 자료(data)를 갖는 구조체를 추가할때의 과정이다.


4라는 자료를 연결하기 위해서 우선, Node*(노드의 포인터형) current 를 선언하고 

Current에 malloc 함수를 통해 Node 형 공간을 할당하고 4라는 값의 Data 를 넣어준다. 

위의 그림과 같다.

그리고 나서 Tail의 다음(Next)포인터를 Current 에 연결 해주고 Current 의 이전(Previous)

또한 Tail 에 연결해 준다. 그리고 Current 의 다음(Next)은 당연히 NULL 값을 준다.

그리고 마지막으로


Tail 을 current 가 가르키는 곳과 같은 곳을 가르키게 이어주면 4라는 값(Data)를 갖는

연결리스트로 만들수있다. 위의 과정은 많은 리스트 클래스 중에 PushBack 과정을

그림으로 그려 본것이다. 


위의 사진은 클래스를 만들때 쓰였던 . 헤더 파일 과 c파일 



0 개의 댓글:

댓글 쓰기