본문 바로가기

알고리즘&프로그래밍

링크드 리스트(Linked List) 링크드 리스트(Linked List) 이름 그대로 "연결된 리스트". C에서는 이 링크드 리스트가 주요한 데이터 구조라고 한다.(나의 C언어 학습은 15년 전 for문에서 멈춰있다...) 링크드 리스트의 기본 구조는 크게 두 가지. Node(Nodejs 아님)와 Pointer. Node는 링크드 리스트의 각 구성단위(데이터 값과 포인터를 가지는)이라고 할 수 있으며, 바로 앞에 괄호에서 말한 포인터라는 것은 각 노드가 다음 요소를 가리키는(point) 것을 말한다. 링크드 리스트에는 반드시 머리와 꼬리가 있으며, 이 머리와 꼬리를 포함한 모든 요소 하나하나가 노드(Node)인 것이다. Linked List class LinkedList: def __init__(self, head=None, tail=No.. 더보기
Stack 스택은 데이터에 대해 제한적으로 접근할 수 있는 구조다. 가장 나중에 쌓은 것부터만 먼저 꺼낼 수 있다.(LIFO) 바구니에 담은 책을 맨 위에서부터만 꺼낼 수 있는 걸 생각하면 되고, 나중에 들어와서 출구에서 가장 가까운 사람이 먼저 나갈 수 있는 걸 생각하면 된다. 밑장빼기 불가 컴퓨터가 이런 구조라고 한다. 흔히 말하는 '재귀함수'라는 걸 사용하면 그 내용이 Stack의 형태로 쌓여있다가 제일 끝에 있는 것부터 결과를 리턴한다. 파이썬에서는 재귀 함수는 1000번까지 호출할 수 있다고 한다. 즉, 바구니에 담을 수 있는 것은 1000개까지라고 할 수 있다. 코드부터 확인. Push stack = [] stack.append(10) stack.append(20) stack.append(30) stac.. 더보기
Queue 자료 구조 Queue 사람이 줄을 서는 것과 비슷하다. 먼저 줄 선 사람이 먼저 가게에 들어가는 것과 같은 원리다.(기본적인 Queue의 경우) 즉, 회계에서 말하는 선입선출(First-In First-Out) 방식이 기본이다. First-In First-Out (FIFO) Queue 1. queue의 기본 선언(파이썬 라이브러리 이용) import queue data_queue = queue.Queue() 2. queue의 Data In data_queue.put("안녕하세요.") data_queue.put("hello world") 3. queue의 Data Out data_queue.get() 출력결과 : '안녕하세요' '안녕하세요'를 먼저 넣었기 때문에 먼저 나온 것이다. Last-In First.. 더보기