210128 자료구조(Data structure) Linked List(링크드 리스트)(작성중...)

이번 포스팅에서 정리 할 내용은

링크드 리스트(Linked list)에 대한 개념이다.

우선 링크드 리스트란 연결 리스트라고도 하며, 순차적으로 연결된 공간에 데이터를 나열하는 구조인 배열과 대조적으로 링크드 리스트는 떨어진 곳에 존재하는 데이터들을 화살표로 연결해서 관리하는 구조로 되어있다.

C언어에서는 주요한 데이터 구조이지만, Python에서는 리스트 타입이 링크드 리스트의 기능을 모두 지원한다.

링크드 리스트의 기본 구조와 용어

  • 노드(Node) : 데이터 저장 단위(데이터값, 포인터)로 구성이 되어있다.

  • 포인터(Pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있다.

Read more

210128 자료구조(Data structure) Stack(스택)

이번 포스팅에서 정리 할 내용은

스택에 대한 개념이다. 스택을 비유로 들면, 바닥에 쌓여있는 책들을 예로 많이 들고 있는데, 그 이유는 스택은 데이터를 제한적으로 접근할 수 있는 구조로 되어있기 때문이다.

여기서 제한적인 접근이란?

한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조로 되어있다는 것을 말한다.
따라서 LIFO(Last-In-First-Out)의 정책을 가지고 있는 구조이다.
이는 다음에 정리할 큐(queue)의 FIFO(First-In-First-Out)정책과 상반되는 구조이다.

스택은 어디에서 사용되나?

스택은 대표적으로 우리가 사용하는 컴퓨터 내부의 프로세스 구조의 함수 동작 방식에서 사용이 된다.
스택 구조는 프로세스 실행 구조의 가장 기본으로, 함수 호출시 프로세스 실행 구조를 스택과 비교해서 이해할 필요가 있다.

Read more

210128 자료구조(Data structure) Array(배열)

이번 포스팅에서 정리 할 내용은

배열에 대한 개념이다. 파이썬에서는 리스트 타입이 배열의 기능을 제공하지만, c언어의 경우에는 배열을 독립적으로 사용한다.
배열이란 데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조를 말한다.

그럼 배열이 왜 필요해?

Read more

210128 자료구조(Data structure) & 알고리즘(Algorithm) 개념

오늘 정리할 내용은

자료구조에 대한 개념이다. 기본적인 내용이지만 다른 사람에게 설명하듯이 정리해보려고 한다.

자료구조데이터 구조(Data Structure) 라는 용어와 혼재해서 사용된다.
대량의 데이터를 효율적으로 관리할 수 있는 데이터 구조를 의미하는 것으로, 현실에 있는 정보를 프로그래밍으로 바꾸려면 정보에서 데이터로 변환이 필요한데 이때 필요한 것이 자료구조이다.

개발자에게 자료구조(데이터 구조)란?

개발자는 현실에 있는 데이터를 활용해서 프로그래밍 언어로 개발을 하기 때문에 데이터를 가지고 개발을 할때 자료구조에 대한 지식은 필수이다. 그리고 데이터 구조에는 다양한 구조들이 있는데, 어떤 데이터 구조를 사용하느냐에 따라 코드의 효율이 즉, 프로그램의 퍼포먼스가 달라진다.

Read more