링크드 리스트에 대한 수업을 들었다.
1. 연결 리스트 ( Linked List )
1. 연결 리스트
- 연결 리스트, 링크드 리스트는 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다.
- 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 당담하게 된다.
2. 연결 리스트 종류
- 단일 연결 리스트
- 이중 연결 리스트
3. 시간 복잡도
연결 리스트는 늘어선 노드의 중간지점에서도 자료의 추가와 삭제가 O(1)의 시간에 가능하다는 장점을 갖는다.
그러나 배열이나 트리 구조와는 달리 특정 위치의 데이터를 검색해 내는데에는 O(n)의 시간이 걸리는 단점도 갖고 있다.
4. 그림 예시
어떤식으로 연결이 되며 어떤식으로 그림을 그려야 하는지에 대한 설명이다.
첫 번째 예시는 *(*p->p)->p / 두 번째 예시는 *(***p->p->p)->p에 대한 것이다.
5. 예시
#include <iostream>
struct S_NODE
{
int nData;
S_NODE* pNext;
};
int main()
{
S_NODE* pBegin{};
pBegin = new S_NODE{ 1, nullptr };
pBegin->pNext = new S_NODE{ 2, nullptr };
pBegin->pNext->pNext = new S_NODE{ 3, nullptr };
pBegin->pNext->pNext->pNext = new S_NODE{ 4, nullptr };
S_NODE* pNode = pBegin;
while (pNode)
{
printf("%d ", pNode->nData);
pNode = pNode->pNext;
}
}
'C++' 카테고리의 다른 글
[강의] 12월 5일 수업정리 (1) | 2024.12.06 |
---|---|
[강의] 12월 4일 수업정리 (0) | 2024.12.05 |
[강의] 11월 29일 수업정리 (1) | 2024.11.29 |
[강의] 11월 28일 수업정리 (3) | 2024.11.29 |
[강의] 11월 27일 수업정리 (0) | 2024.11.27 |