cheoly's language study blog

자료구조 연결리스트 개념, 장점, 단점, 배열과의 차이

프로그래밍/C언어
반응형
SMALL

연결리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조입니다.
각 노드는 다음 노드를 가리키는 포인터를 포함합니다.
다음 노드를 가리키는 포인터는 다음 노드의 주소를 값으로 가지고 있습니다.
각 노드의 포인터 변수는 다음 노드의 데이터의 주소를 값으로 가진다.
또한 각 포인터 변수의 주소도 따로 존재한다.

연결 리스트의 종류로는 단일 연결 리스트, 이중 연결 리스트 등이 있습니다.
연결 리스트는 늘어선 노드의 중간지점에서도 자료의 추가와 삭제가 O(1)의 시간에 가능하다는 장점을 갖습니다.
그러나 배열이나 트리 구조와는 달리 특정 위치의 데이터를 검색해 내는데에는 O(n)의 시간이 걸리는 단점도 갖고 있습니다.

연결 리스트는 다음과 같은 장점과 단점을 가지고 있습니다.

* 장점
    * 데이터의 추가와 삭제가 용이하다.
    * 데이터의 삽입과 삭제가 배열보다 빠르다.
    * 데이터의 중복이 없다.

* 단점
    * 데이터의 검색이 느리다.
    * 메모리 공간이 많이 필요하다.
    * 데이터의 순서가 중요하다.

연결 리스트는 다음과 같은 분야에서 사용됩니다.

##스택
    * 스택은 데이터를 쌓아 올리는 자료 구조입니다.
    * 연결 리스트는 스택의 데이터를 추가하고 삭제하는 데 사용됩니다.

##큐
    * 큐는 데이터를 줄을 서서 기다리는 자료 구조입니다.
    * 연결 리스트는 큐의 데이터를 추가하고 삭제하는 데 사용됩니다.

##연결 리스트
    * 연결 리스트는 데이터를 한 줄로 연결한 자료 구조입니다.
    * 연결 리스트는 데이터의 추가와 삭제가 용이합니다.

연결 리스트는 데이터의 추가와 삭제가 용이한 자료 구조입니다.
그러나 데이터의 검색이 느리다는 단점이 있습니다.
연결 리스트는 스택, 큐와 같은 자료 구조를 구현하는 데 사용됩니다.

##연결리스트 예시

```
1 -> 2 -> 3 -> 4 -> 5
```

이 연결리스트는 1, 2, 3, 4, 5의 데이터를 저장하고 있습니다. 1은 첫 번째 노드이고, 5는 마지막 노드입니다. 2는 1의 다음 노드이고, 3은 2의 다음 노드입니다. 4는 3의 다음 노드이고, 5는 4의 다음 노드입니다.

연결리스트는 배열과 비교하여 다음과 같은 장점이 있습니다.

* 데이터의 삽입과 삭제가 쉽다.
* 데이터의 크기가 가변적이다.

연결리스트는 배열과 비교하여 다음과 같은 단점이 있습니다.

* 데이터의 접근이 느리다.
* 데이터의 저장 공간이 많이 필요하다.

연결리스트는 배열과 비교하여 다음과 같은 용도로 사용됩니다.

* 데이터의 삽입과 삭제가 빈번한 경우
* 데이터의 크기가 가변적인 경우

연결리스트는 배열과 비교하여 다음과 같은 용도로 사용되지 않습니다.

* 데이터의 접근이 빈번한 경우
* 데이터의 저장 공간이 적은 경우

반응형
LIST

자료구조 스택과 큐의 개념과 차이

프로그래밍/C언어
반응형
SMALL

자료구조는 컴퓨터 프로그램에서 데이터를 저장하고 관리하는 방법입니다. 스택과 큐는 자료구조의 두 가지 기본적인 유형입니다.

* **스택**


스택은 후입선출(LIFO) 구조를 가지고 있습니다. 즉, 가장 마지막에 삽입된 데이터가 가장 먼저 삭제됩니다.
스택은 웹 브라우저의 뒤로 가기 버튼, 수식 계산기의 undo 기능, 프로그래밍 언어의 함수 호출 및 반환에 사용됩니다.

스택은 데이터를 빠르게 삽입 및 삭제할 수 있습니다.
스택은 데이터를 삽입할 때는 가장 마지막에 데이터를 삽입하고, 데이터를 삭제할 때는 가장 마지막에 삽입된 데이터를 삭제합니다.
따라서 스택은 데이터를 빠르게 삽입 및 삭제할 수 있습니다.

그러나 스택은 데이터에 대한 랜덤 액세스가 불가능합니다.
랜덤 액세스란 데이터의 위치에 관계없이 데이터에 접근하는 것을 말합니다.
스택은 데이터를 삽입 및 삭제할 때는 가장 마지막에 삽입된 데이터에만 접근할 수 있습니다.
따라서 스택은 데이터에 대한 랜덤 액세스가 불가능합니다.

* **큐**


큐는 선입선출(FIFO) 구조를 가지고 있습니다. 즉, 가장 먼저 삽입된 데이터가 가장 먼저 삭제됩니다.
큐는 프린터의 인쇄 대기열, 은행의 대기열, 운영 체제의 프로세스 스케줄링에 사용됩니다.

큐는 데이터에 대한 랜덤 액세스가 가능합니다.
큐는 데이터를 삽입할 때는 가장 앞에 데이터를 삽입하고, 데이터를 삭제할 때는 가장 앞에 삽입된 데이터를 삭제합니다.
따라서 큐는 데이터에 대한 랜덤 액세스가 가능합니다.

그러나 큐는 데이터를 빠르게 삽입 및 삭제할 수 없습니다.
큐는 데이터를 삽입할 때는 가장 앞에 데이터를 삽입하고, 데이터를 삭제할 때는 가장 앞에 삽입된 데이터를 삭제합니다.
따라서 큐는 데이터를 빠르게 삽입 및 삭제할 수 없습니다.

스택과 큐는 모두 자료구조의 기본적인 유형이지만, 서로 다른 특징을 가지고 있습니다.
스택은 데이터를 빠르게 삽입 및 삭제할 수 있지만, 데이터에 대한 랜덤 액세스가 불가능합니다. 큐는 데이터에 대한 랜덤 액세스가 가능하지만, 데이터를 빠르게 삽입 및 삭제할 수 없습니다.

스택과 큐는 컴퓨터 프로그램에서 다양한 용도로 사용됩니다.
스택은 데이터를 빠르게 삽입 및 삭제해야 하는 경우에 적합하고, 큐는 데이터에 대한 랜덤 액세스가 필요한 경우에 적합합니다.

반응형
LIST