📕자료구조 공부 전 N년 전(N은 1보다 크다...)에 배운 c언어 복습 겸 예제 문제 저장 글
💡분명 다 이해하고 넘어간 것 같은데 다시 마주하면 헷갈리는 포인터&구조체 개념들 ^^,, 각각 이해하고 있어도 구조체 매개변수로 포인터가 들어가거나 하면 멈칫하게 되는 것 같다. 확실하게 정리하고 넘어가자.
💡 다항식 덧셈 출력하기 (1) 모든 차수에 대한 계수 값을 배열로 저장해, 하나의 다항식을 하나의 배열로 표현한다. 모든 계숫값은 coef[]에 저장되고, 차수는 degree로 저장된다. 두 데이터는 묶어서 구조체에 저장한다. 배열 coef와 변수 degree는 Poly라는 구조체를 만들어서 저장하겠다. 출력문에서, 차수는 5 -> 4 -> 3 ...
onlinegdb c 작성
📕 스택은, 쌓아놓은 더미. 창고에 쌓여있는 상자 더미를 생각하면 편하다. 상자를 쌓을때는 맨 윗부분에 올려두게 되고, 상자가 필요하면 맨 윗부분에서 가져간다. 만약 중간에 있는 상자를 가져가면 전체 상자가 붕괴된다.
(5) 스택의 응용 : 괄호 검사 문제 조건 1: 왼쪽 괄호의 개수 = 오른쪽 괄호의 개수조건 2: 같은 종류의 괄호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야한다.조건 3: 서로 다른 종류의 왼쪽과 오른쪽 괄호 쌍은 서로를 교차하면 안된다.(6) 스택의 응용: 후위
📕스택의 경우, 나중에 들어온 데이터가 먼저 나가지만 큐는 먼저 데이터가 먼저 나가는 구조다 (FIFO : First - in - First - Out). 큐는 삽입과 삭제가 다른 쪽에서 일어난다.
📕리스트: 항목들이 차례대로 저장되어 있는 것 리스트의 항목들은 순서 또는 위치를 가진다. 스택과 큐도 넓게 보면 리스트의 일종이다. 리스트는 스택, 큐와 마찬가지로 삽입 삭제 연산이 가능할 뿐만 아니라 특정한 항목을 찾는 탐색 연산도 가능하다. (1)배열을 이용한
📕덱: double ended queue, 큐의 전단과 후단에서 모두 삽입삭제가 가능하다. 원형큐를 조금 변형시키면 구현 가능
8.1 트리 > 리스트, 스택, 큐 등은 선형 구조 이지만 트리는 계층적인 구조를 나타내는 비 선형구조다. 제약조건이 있는 그래프(사이클이 없는 연결 그래프 ✨ 트리의 응용 분야: 계층적인 조직, 컴퓨터 디스크의 디렉토리 구조, 인공지능에서의 결정트리, 책의 목차
레벨 순회각 노드를 레벨 순으로 검사하는 순회 방법. 루트 노드의 레벨이 1이고 아래로 내려갈수록 레벨은 증가한다. 동일한 레벨의 경우에는 좌에서 우로 방문한다. 큐를 사용하는 순회 법이다. 큐에 있는 노드를 꺼내어 방문한 다음 그 노드의 자식 노드를 큐에 삽입하는 것
9.1 우선순위 큐 추상 데이터 타입우선순위 큐: 우선순위를 가진 항목들을 저장하는 큐, FIFO순서가 아니라 우선순위가 높은 데이터가 먼저 나가게 된다.(도로에서 구급차가 먼저 이동하는 걸 생각하자)💡가장 일반적인 큐: 스택이나 FIFO 큐를 우선순위 큐로 구현할
10.1 그래프란?연결되어 있는 객체 간의 관계를 표현하는 자료구조. 많은 문제들은 서로 연결되어 있는 구조로 표현해야 하는데, 선형리스트나 트리의 구조로는 복잡한 문제를 표현할 수 없다. 그래프는 광범위한 분야의 다양한 문제드를 표현해 컴퓨터 프로그램이에 의해 해결할
📕 그래프 탐색 : 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것이다. 특정한 정점에서 다른 정점으로 갈 수 있는지 없는지. 특정 도시에서 다른 도시로 갈 수 있는지 없는지깊이 우선 탐색(DFS: depth first search)트리처럼,
최소 비용 신장 트리 (Minimum spanning tree)신장 트리(spanning tree): 그래프 내의 모든 정점을 포함하는 트리. 사이클을 포함해서는 안되고 n개의 정점을 가지는 그래프의 신장 트리는 n-1개의 간선을 가진다. MST는 신장 트리 중에서 사
Prim의 MST 알고리즘시작 정점에서 출발하여 신장 트리 집합을 단계적으로 확장해나가는 방법.신장 트리 집합에 인접한 정점 중에서 최저 간선으로 연결된 정점을 선택해 신장 트리 집합에 추가한다.신장 트리 집합에 정점의 개수가 n-1개가 될 때 까지 반복한다. 💡 K
정렬이란?물건을 내림차순이나 오름차순으로 나열하는 것. 자료 탐색에서 필수적이다. 최상의 성능을 보여주는 최적 알고리즘은 존재하지 않기 때문에 현재 프로그램의 수행환경에서 가장 효율적인 정렬 알고리즘을 선택해야 한다. (비교 연산의 횟수, 이동 연산의 횟수)💡단순하지
탐색여러 개의 자료 중에서 원하는 자료를 찾는 작업, 컴퓨터가 가장 많이 하는 작업 중 하나이기 때문에 탐색을 효율적으로 수행하는 것은 매우 중요하다.탐색을 위한 자료구조 = 배열, 연결 리스트, 트리, 그래프탐색키 = 항목과 항목을 구별해주는 키이진 탐색 (binar