프로그래밍/알고리즘
저번 글까지 링크드 리스트 3가지를 모두 알아봤습니다. 이번 글에서는 스택에 대해서 알아보도록 하겠습니다.' 스택 스택(stack)은 굉장히 많이 들어본 자료구조일 것이라고 생각합니다. 스택은 영어로 쌓다라는 뜻이 있는 단어입니다. 이 글에서 설명할 스택도 말그대로 데이터를 쌓는 것입니다. 데이터 즉, 노드를 쌓는 스택은 출입구가 하나입니다. 그래서 마지막에 들어간 데이터가 제일 처음 나오게 됩니다. 이것을 LIFO, Last In First Out 이라고 부릅니다. 가장 쉬운 예시로 프링글스 통을 들수 있겠네요. 프링글스 통에 과자를 넣으면 맨 마지막에 들어간 과자가 맨 처음 나오게 됩니다. 이것과 같은 원리로 만들어진 것이 스택이죠. 파이썬에서 스택을 구현하는 것은 굉장히 간단합니다. 파이썬에 기본적..
저번 포스팅까지해서 링크드 리스트가 모두 정리됐습니다! 이번 글에서는 링크드 리스트에 대한 정리와 링크드 리스트 활용을 해보기 위한 메인 프로그램 만들기를 해보겠습니다. 2. 링크드 리스트 - 1 싱글 링크드 리스트 [자료구조] 2. 링크드 리스트 - 1 싱글 링크드 리스트 기본적으로 C의 배열은 지정된 크기 이상의 데이터를 넣지 못합니다. 하지만 데이터가 어느 정도로 있을지 정확하게 알 수 없기 때문에 배열의 크기를 바꾸거나 처음부터 크게 잡아야 합니다. hiittech.tistory.com 2. 링크드 리스트 - 2 더블 링크드 리스트 [자료구조] 2. 링크드 리스트 - 2 더블 링크드 리스트 저번 글에서는 싱글 링크드 리스트에 대해서 공부하고 직접 구현해봤습니다. 2. 링크드 리스트 - 1 싱글 링..
링크드 리스트의 마지막인 환형 링크드 리스트입니다. 저번에 구현했던 더블 링크드 리스트와 연관된 부분이 많습니다! 2. 링크드 리스트 - 2 더블 링크드 리스트 [자료구조] 2. 링크드 리스트 - 2 더블 링크드 리스트 저번 글에서는 싱글 링크드 리스트에 대해서 공부하고 직접 구현해봤습니다. 2. 링크드 리스트 - 1 싱글 링크드 리스트 [자료구조] 2. 링크드 리스트 - 1 싱글 링크드 리스트 기본적으로 C의 배열은 hiittech.tistory.com 환형 링크드 리스트 환형 링크드 리스트, 다른 말로는 원형 연결 리스트라고도 합니다. 이 리스트는 말 그대로 원형으로 생긴 리스트입니다. 더블 링크드 리스트와 유사하게 생겼는데, head와 tail이 연결된 것입니다. head의 이전 노드 포인터에 ta..
저번 글에서는 싱글 링크드 리스트에 대해서 공부하고 직접 구현해봤습니다. 2. 링크드 리스트 - 1 싱글 링크드 리스트 [자료구조] 2. 링크드 리스트 - 1 싱글 링크드 리스트 기본적으로 C의 배열은 지정된 크기 이상의 데이터를 넣지 못합니다. 하지만 데이터가 어느 정도로 있을지 정확하게 알 수 없기 때문에 배열의 크기를 바꾸거나 처음부터 크게 잡아야 합니다. hiittech.tistory.com 싱글 링크드 리스트는 앞쪽(헤드)에서 뒤쪽(테일)으로 한 방향으로만 연결된 리스트를 말했죠. 그래서 단순 연결 리스트라고도 불립니다. 이번에는 양쪽으로 연결되는 더블 링크드 리스트, 즉 이중 연결 리스트를 알아보도록 하겠습니다. 더블 링크드 리스트 더블 링크드 리스트는 싱글 링크드 리스트와 달리 뒤쪽으로 가는..
기본적으로 C의 배열은 지정된 크기 이상의 데이터를 넣지 못합니다. 하지만 데이터가 어느 정도로 있을지 정확하게 알 수 없기 때문에 배열의 크기를 바꾸거나 처음부터 크게 잡아야 합니다. 그러면 결국 메모리를 너무 크게 잡게됩니다. 그래서 크기를 유연하게 바꿀 수 있는 구조인 리스트(List)를 만들게 됩니다. ⚠ 기본적으로 파이썬으로 구현하였습니다.(Python 3.10) 링크드 리스트 링크드 리스트(Linked List)는 리스트 중 가장 쉽게 구현할 수 있는 기법입니다. 링크드 리스트는 리스트의 요소인 노드(Node)를 연결해서 만드는 방법입니다. 링크드 리스트에서 노드는 데이터를 보관하는 필드와 다음 노드와의 연결 고리인 포인터로 이루어집니다. 이런 노드들을 고리처럼 매달면 링크드 리스트가 되는 것..
2학년 1학기를 급하게 대비하면서 처음으로 한 거는 자료구조 복습! 자료구조, Data Structure는 컴퓨터가 데이터를 효율적으로 다룰 수 있도록 만드는 각종 구조를 말합니다 대부분의 자료구조는 라이브러리로 구현돼있지만, 만들 줄 알아야 한다고 생각했습니다! 글을 쓰면서 아래에 목록들을 추가해두겠습니다! 2. 링크드 리스트 - 1 싱글 링크드 리스트 2. 링크드 리스트 - 2 더블 링크드 리스트 2. 링크드 리스트 - 3 환형 링크드 리스트 2. 링크드 리스트 - 4 정리 + 메인 프로그램 만들기 자료구조는 단순해서 고급 언어에는 대부분 구현돼있는 단순(Primitive)과 복합(Non-primitive)로 나뉩니다. 물론 복합으로 묶이는 구조들도 많이 구현되어 있습니다! 우선, 단순에는 int, ..