리스트는 두가지의 방법으로 만들어 줄 수 있습니다.

 

1. 배열

배열을 이용한 리스트는 가장 쉽게 사용할 수 있습니다.

그러나  몇가지 단점이 존재합니다.

   1. 동적으로 공간을 생성할 수 없다

      만약 배열의 크기가 100인데 실제 데이터는 10개밖에 없다면 공간낭비가 심하겠죠

   2. 리스트의 추가 삭제가 어렵다

     내가 지정한 위치에서 삭제 또는 추가를 한다면 뒤의 데이터를 모두 당기거나 밀어줘야합니다

 

 

2.단순연결리스트

  단일연결리스트는 하나의 노드안에 실제 정보인 데이터필드

  다음 노드를 가르키는 포인터 링크를 가지고 있습니다.

 

 

typedef struct Listnode{
 int data;
 struct Listnode *link;
}Listnode;


​이렇게 구조체를 이용하여 리스트노드를 만들어 준 뒤

필요할 때마다 노드들을 삭제 생성하며 리스트를 구현하는 방법입니다. 

 

단순연결리스트는 main에서 head 포인터 하나면 모든 것을 해결할 수 있습니다.

​ head는 리스트의 가장 처음을 가르킵니다. 삭제나 추가를 할 때 헤드가 가르키는 곳은 바뀔수는 있지만

항상 맨 앞을 가르켜야합니다! 그리고 리스트의 가장 마지막 노드의 링크는 NULL 이여야 합니다.

리스트를 구현하기 위해 필요한 기능들을 이제 만들어 보겠습니다

 


 


 

결과!

 

 

리스트 역순 아래링크 참고

http://euns2ol.tistory.com/6

복사했습니다!