본문 바로가기
728x90

전체 글129

[자료구조] 스택(Stack) 실습 (feat. 연결 리스트) 보호되어 있는 글 입니다. 2022. 6. 3.
[자료구조] 스택(Stack) 실습 (feat. 배열) 스택(Stack) 배열을 기반으로 하는 스택 구현은 자료구조 중 매우 쉬운편이다! 홧팅 스택의 개념이 궁금하다면? [자료구조] 스택(Stack) 스택(Stack) 스택(Stack : 쌓다)은 사진에서 사과를 쌓을 때 위로 쌓는 것만 가능하듯이 한 방향으로만 입력할 수 있으며, 구조 중간에 값을 끼워 넣어 저장할 수 없다. 즉, 같은 크기의 자료를 정해 jin-network.tistory.com 배열 기반 Stack 소스 코드 📌ArrayBaseStack.h //출처 : 윤성우의 열혈 자료구조 //ArrayBaseStack.h #ifndef __AB_STACK_H__ #define __AB_STACK_H__ #define TRUE1 #define FALSE0 #define STACK_LEN100 typed.. 2022. 6. 3.
[자료구조] 스택(Stack) 스택(Stack) 스택(Stack : 쌓다)은 사진에서 사과를 쌓을 때 위로 쌓는 것만 가능하듯이 한 방향으로만 입력할 수 있으며, 구조 중간에 값을 끼워 넣어 저장할 수 없다. 즉, 같은 크기의 자료를 정해진 한 방향으로만 입력, 저장, 삭제가 가능하다. 맨 아래 있는 사과를 꺼내기 위해서 가장 위에 있는 사과부터 꺼내야 하는 것처럼 후입선출(Last-In First-Out, LIFO) 구조로 가장 마지막에 들어온 데이터(사과)가 가장 먼저 리턴, 삭제된다는 뜻이다. 스택의 연산 📌 push(item) item 하나를 스택의 가장 윗부분에 추가한다. 📌 pop() 스택에서 가장 위에 있는 항목을 제거한다. 📌 peek() 스택의 가장 위에 있는 항목을 반환한다. (이번에 꺼낼 값이 뭔지 확인한다) 📌 .. 2022. 6. 3.
[자료구조] 연결 리스트(Linked List) 실습 (feat. 연결 리스트) 연결 리스트의 기본 원리 "필요할 때마다 구조체 변수를 하나씩 *동적 할당해서 이들을 연결" *동적 할당 : malloc(메모리의 동적 할당) 함수를 사용 연결 리스트의 개념이 궁금하다면? [자료구조] 연결 리스트(Linked List) 연결 리스트(Linked List) 연결 리스트는 *노드(Node)의 연결로 이루어진 자료구조이다. *노드 : 연결 리스트에서 데이터를 구성하는 요소(데이터, 연결 정보(링크)로 구성되어 있음) 노드는 데이터(dat jin-network.tistory.com ✔️ 노드(Node) 구조 노드는 데이터를 담는 데이터 필드(Data)와 다음 노드를 가리키는 링크(Link)로 구성되어 있다. 연결 리스트 소스 코드 📌LinkedList.c //출처 : 윤성우의 열혈 자료구조 /.. 2022. 5. 30.
[자료구조] 연결 리스트(Linked List) 연결 리스트(Linked List) 연결 리스트는 *노드(Node)의 연결로 이루어진 자료구조이다. *노드 : 연결 리스트에서 데이터를 구성하는 요소(데이터, 연결 정보(링크)로 구성되어 있음) 노드는 데이터(data)와 다음 노드를 가리키는 링크(next)로 구성되어 있다. 제일 앞에 있는 노드를 헤드(head), 제일 끝에 있는 노드를 테일(tail)이라고 한다. 연결 리스트의 장단점 📌 장점 연결 리스트의 가장 큰 장점은 리스트의 길이가 가변적이라는 것이다. 배열은 크기가 가변적이지 않아서 크기를 정해준 다음에 부족하면 메모리를 더 할당하고, 배열의 데이터를 복사해야 한다. 하지만 연결 리스트는 다음 노드만 추가하면 되기 때문에 리스트의 사이즈를 조정하는 데 큰 비용을 들이지 않는다. 📌 단점 연결.. 2022. 5. 23.
[자료구조] 자료구조 종류 😉각 자료구조의 제목을 누르시면 좀 더 자세한 내용을 다룬 포스팅으로 넘어갑니다! (아직 미완인 것도 있음!)😉 1. Array(배열) 배열(Array : 정렬)은 동일한 타입의 데이터들을 저장(배열이 "int"타입인 경우 정수 요소만 저장 가능)하며, 고정된 크기를 가지고 있다. 인덱싱이 되어 있어 인덱스 번호로 데이터에 접근할 수 있다. (인덱스를 지정하여 접근하기 때문에 모든 요소에 빠르게 접근 가능하다.) 📌 배열의 용도 - 특정 요소를 빠르게 읽어야 할 때 - 다차원 데이터를 다룰 때 2. Linked List(연결 리스트) 연결 리스트(Linked List : 연결 목록)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이다. ex) 첫 번째 노드.. 2022. 5. 19.
[자료구조] 추상 자료형(스택 & 큐) 추상 자료형에 대한 설명은 여기 ← 클릭!!! 대표적인 추상 자료형, 스택(Stack)과 큐(Queue) 우리의 상상 속에만 존재하는 대표적인 자료구조 두 가지로는 스택과 큐가 있다! 왜 상상 속에만 존재할까? 스택과 큐는 실제로 프로그래밍 언어들에서 존재하지 않는다. 쉽게 말해 스택과 큐는 일종의 '규칙'이라고 할 수 있다. 자료구조가 스택 혹은 큐로 구분되기 위한 규칙! 이걸 추상 자료형(ADT)이라고 한다. ADT는 자료구조의 한 형태인데 자료구조의 방법이 코드로 정의된 것이 아니라, 그 구조의 행동 양식만 정의된 것을 말한다. 스택(Stack) 스택(Stack : 쌓다)은 그림에서 사과를 쌓을 때 위로 쌓는 것만 가능하듯이 한 방향으로만 입력할 수 있으며 구조 중간에 값을 끼워 넣어 저장할 수 없.. 2022. 5. 19.
[자료구조] 추상 자료형(Abstract Data Type) 추상 자료형(Abstract Data Type) 기능의 구현 부분을 나타내지 않고 순수한 기능이 무엇인지 나열한 것을 추상 자료형(ADT)이라고 한다. 객체지향 언어(C++, JAVA 등)의 클래스(Class) 또는 사용설명서(User's Guid)와 유사하다. 📌 예시 1 (선풍기의 사용 설명서) 선풍기의 사용 설명서에는 정지, 미풍, 약풍, 강풍, 회전, 타이머 등의 기능 설명과 사용 방법이 나와있다. 하지만 버튼을 눌렀을 때 선풍기 내부 회로에서 어떤 일이 발생하는지에 대해서는 전혀 나와있지 않다. 이렇게 선풍기의 사용 설명서와 같이 "구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것"을 가리켜 '추상 자료형'이라고 한다. 📌 예시 2 (음료수 자판기) 두 번째 일상 .. 2022. 5. 17.
[자료구조] 자료구조(Data Structure) [알고리즘] 시리즈는 따로 포스팅 하겠지만 자료구조와 알고리즘은 다른 과목임에도 불구하고 매우 많은 연관성을 지니고 있기에 [자료구조] 시리즈에서 관련이 있는 알고리즘도 같이 설명하겠습니다! 자료구조와 알고리즘 프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다. 데이터 표현(저장) : 자료구조 / 데이터 처리 : 알고리즘 프로그램이 실행되기 위해서는 메모리에 올릴 데이터가 필요하며 이 데이터들을 담아내는 방식이 자료구조이다. 쉽게 말해 '데이터의 저장'을 담당하는 것은 자료구조이고, 그 데이터를 이용해 문제를 해결하는 방법은 알고리즘이다. 우리는 데이터(자료)를 저장한 경험이 있다. 예를 들면 "정수를 저장하기 위해 int형 변수를 선언한다." "다양한 정보를 저장하기 위해 배열을 .. 2022. 5. 15.
728x90