본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다

코딩17

[Data Structure] 스택(Stack) 이번에는 스택에 대해 다뤄보려고 합니다. 흔히 사용하는 표현 중에서 스택을 쌓는다는 말이 있습니다. 즉, 쌓는다는 말을 사용하듯 밑에서부터 위로 올라가는 형식임을 알 수 있습니다. 만약 접시를 차곡차곡 쌓는다고 해보겠습니다. 10개를 쌓았는데 그중 6번째 접시를 빼내고 싶으면 10부터 7까지의 접시를 빼낸 후 6번째 접시를 빼냅니다. 스택에서는 접시 대신 자료가 들어가는 셈입니다. 스택의 형태는 위의 그림과 같습니다. 내가 원하고자 하는 요소를 얻기 위해서는 그 위에 있는 모든 요소를 빼낸 후 볼 수가 있기 때문에 후입선출 리스트라고 할 수 있습니다. 후입선출은 Last-In-First-Out으로 마지막에 들어온 게 가장 먼저 나간다라는 뜻입니다. 스택에는 연결리스트나 기타 자료구조와는 다르게 top이라.. 2023. 7. 4.
[Data Structure] 연결 리스트2(Linked List2) 이번 포스팅에서는 이전에 다뤘던 연결 리스트의 개념을 이용한 리스트인 원형 연결 리스트와 이중 연결 리스트에 대해 얘기해보려 합니다. 먼저 원형 연결 리스트입니다. 원형 리스트는 기존의 단일 연결 리스트에서 마지막 노드가 NULL이 아닌 head가 가리키는 첫 번째 노드를 가리킨다는 것이 차이점입니다. 일반적인 연결 리스트에서는 link가 한 방향으로 흘러가기 때문에 마지막 노드는 무조건 NULL을 가리킵니다. 그러나 원형 연결 리스트에서는 위와 같은 구성을 띄게 함으로써 원형과 같은 형태로 구성합니다. 원형 연결 리스트에 있어서 주의할 부분은 딱 하나입니다. head를 가리키는 마지막 노드의 link에 대한 처리입니다. 만약 insert를 해준다고 할 때, 중간에 값을 삽입하는 것은 기존과 같습니다. .. 2023. 5. 18.
[Data Structure] 연결 리스트(Linked List) ● 연결 리스트(Linked List) 연결 리스트는 선형 리스트처럼 리스트의 한 종류입니다. 연결 리스트는 전체적으로 보면 선형 리스트의 단점을 보완한다는 점이 있지만, 그만큼 구현이 복잡하기 때문에 서로가 장단점은 가진다고 볼 수 있습니다. 선형 리스트의 가장 큰 단점이라고 한다면 바로 리스트의 조작입니다. 선형 리스트는 배열을 기반으로 하기 때문에 정해진 크기 내에서만 활용이 가능하며, 그렇다고 배열의 최대 크기를 너무 크게 잡아버리면 낭비되는 메모리가 많아 결점이 많은 방법이었습니다. 연결 리스트는 이러한 문제를 해결해 줍니다. 연결 리스트는 배열을 사용하지 않고, 데이터 하나하나를 node의 개념으로 접근합니다. 예를 들어 배열에 1과 2를 넣으면 1과 2는 서로 다른 인덱스에 들어있지만 결국은.. 2023. 4. 15.
[Data Structure] 선형 리스트(Linear List) C언어에는 파이썬이나 자바와 달리 list라는 내장된 자료형이 없습니다. 보통 파이썬에서 list를 사용하면 list 내에서의 조작이 굉장히 자유롭습니다. 예를 들어 뒤에 이어 붙이기, 삭제하기 등이 단 하나의 명령어면 해결이 가능합니다. 그러나 C언어에는 list가 존재하지 않습니다. 그래서 위에서 말한 조작이 자유로운 배열의 형태를 직접 만들어주는 게 목적입니다. ● 선형 리스트 c언어에서 구현할 수 있는 리스트에는 여러 종류가 있습니다. 그 중 가장 먼저 생각할 수 있는 것이 선형 리스트입니다. 리스트라는 개념을 생각해보면 항목을 쭉 늘여놓은 목록 같은 개념입니다. 그렇다면 이를 c언어에서 구현한다고 생각했을 때 가장 먼저 생각나는 것이 배열입니다. typedef int element; typede.. 2023. 4. 14.