CS/자료구조 2

[CS] 자료구조 2. 연결리스트

연결리스트 연결리스트의 구조는 빼빼로처럼 생겼다고 생각하면 받아들이기 쉬웠다. 먹고 싶은 부위인 초콜릿엔 필요한 값을 넣고, 그냥 과자 부분엔 포인터를 넣는다. 이 포인터에는 다음 값이 어디 저장되어있는지 주소를 저장한다. 하나의 빼빼로를 노드라고 부른다. 추가 연결리스트에서 노드를 집어넣기 위해서는 2가지 일만 해주면 된다. 이전 노드의 포인터를 집어넣으려는 노드의 주소로 지정한다. 다음 노드의 주소를 집어넣으려는 노드의 포인터로 지정한다. 확실히 배열과는 다른 차이가 있다. 시간이 길이에 상관되지 않는 상수값이기 때문에, O(1)의 시간 복잡도를 가진다고 한다. 조회 조회가 연결리스트의 단점이다. 5개의 노드가 연결된 리스트가 있다고 생각했을 때 원하는 값을 찾기 위해서는 모든 노드를 포인터의 지시에..

CS/자료구조 2023.06.06

[CS] 자료구조 1. 배열

선형 자료구조란? 선형 자료구조는 데이터가 저장되고 만들어지는 구조가 일직선상으로 존재하기에 붙은 이름이다. 크게 배열, 벡터, 리스트, 스택, 큐 정도를 다뤄보려고 한다. 배열 배열은 인덱스를 가지고 각 인덱스마다 값을 하나씩 저장하는 구조이다. 같은 타입의 변수를 가지고, 크기가 정해져 있으며, 데이터를 인접한 메모리 위치에 저장한다. 중복을 허용하며 순서(인덱스)를 가진다. 특징으로는 랜덤 접근이 가능하다. 즉, 랜덤으로 인덱스를 주었을 때 이를 바로 찾아올 수 있다는 뜻이다. (이렇게 말하는 것은 이러지 못하는 녀석이 있다는 뜻!) 추가 위에서 배열의 크기가 정해져 있다고 했다. 그러면 데이터를 추가할 때에는 어떻게 해야할까? 새로운 배열을 만들고, 내가 집어넣으려는 인덱스 이전까지의 배열을 복제..

CS/자료구조 2023.06.05