자료구조 9

[자료구조] chap9. 우선순위 큐

9.1 우선순위 큐 추상 데이터 타입[우선순위 큐] 데이터들이 우선순위 갖고있고 우선순위 높은 데이터가 먼저 나간다.0개 이상의 요소 모임(각 요소는 우선순위값 갖고 있음)최소 우선순위 큐: 가장 우선순위 낮은 요소가 먼저 삭제최대 우선순위 큐: 가장 우선순위 높은 요소가 먼저 삭제  9.2 우선순위 큐의 구현방법1. 배열 사용정렬 안 된 배열 사용:삽입 - 배열의 맨 끝에 새로운 요소 추가> 시간복잡도 O(1)삭제 - 가장 우선순위가 높은 요소를 찾아야 한다. > 정렬 안 돼 있으므로 처음부터 끝까지 모든요소 스캔 > 시간복잡도 O(n)+요소 삭제된 다음 뒤에 있는 요소를 앞으로 이동시켜야 한다.정렬된 배열 사용: 삽입- 위치 찾기 위해 순차탐색, 이진탐색 이용> 삽입위치 뒤의 요소 이동시켜서 빈자리 ..

자료구조 2024.10.22

[자료구조] chap8. 트리

8.1 트리의 개념 트리: 계층적인 구조를 나타내는 자료구조(계층적인 구조)선형자료구조(리스트, 스택, 큐), 한 개 이상의 노드로 이루어진 유한 집합 노드(node): 트리의 구성요소에 해당하는 A, B, C, D, E , F, G, H, J  A: 루트/ 서브트리에서는 B,C,D가 루트연결선: 간선(edge)A는 B의 부모노드, B는 A의 자식노드, B와C와D는 형제관계조상노드: 임의의 노드 상위에 연결되어 뻗쳐나간 모든 노드 후손노드: 임의의 노드 하위로 연결되어 뻗쳐나간 모든 노드단말노드: 자식노드가 없는 노드 비단말노드노드 차수: 어떤 노드가 갖고 있는 자식노드의 개수트리 차수: 트리가 갖고있는 노드의 차수 중 가장 큰 값트리 레벨: 트리의 각층에 번호 매기기(루트의 레벨이 1, 한 층씩 내려갈..

자료구조 2024.10.22

[자료구조] chap7. 연결리스트 II

7.1 원형 연결 리스트원형 연결 리스트 : 마지막 노드가 첫 번째 노드 가리키는 리스트(마지막 노드의 링크필드가 null이 아닌 첫번째 노드 주소가 되는 리스트) 장점: 하나의 노드에서 다른 모든 노드로의 접근 가능 - 링크 계속 따라가면 결국 모든 노드 거쳐서 자기 자신으로 되돌아온다. ->노드 삽입,삭제가 단순 연결리스트보다 용이.(삭제나 삽입시 항상 선행노드 가리키는 포인터 필요) 특히 유용한 경우 : 리스트의 끝에 노드 삽입하는 연산이 단순 연결리스트보다 효율적. (단순 연결리스트에서 리스트 끝에 노드 추가하려면 첫 번째 노드에서부터 링크를 따라서 노드의 개수만큼 진행하여 마지막 노드까지 가야함.) 원형연결리스트는 원칙적으로 헤드 포인터만 있으면 된다.   원형리스트의 처음에 삽입 : 새로운 노..

자료구조 2024.10.21

[자료구조] chap6. 연결리스트 I

6.1 리스트 추상 데이터 타입 리스트: 순서 또는 위치를 가지는 항목들이 차례대로 저장 (스택과 큐도 리스트의 일종)                                              ㄴ집합과는 다름(집합은 항목간 순서가 없기 때문에)                                                                                                       ㄴ삽입, 삭제, 탐색연산리스트 ADT 구현:  배열(더 간단)과 연결리스트 통해 가능 BUT 크기 고정. 포인터 이용하여  만들수도 있음 배열을 사용한 리스트 구현의 장단점장점: 구현 간단, 속도 빠름단점: 리스트 크기 고정, 동적으로 크기 늘리고 줄이기 힘듦, 남은 공간 없으..

자료구조 2024.10.18

[자료구조] chap5. 큐

5.1 큐 추상 데이터 타입-먼저 들어온 데이터가 먼저 나가는 구조(선입선출, FIFO) : 뒤에서 새로운 데이터 추가, 앞에서 데이터 하나씩 삭제. *스택은 삽입삭제가 같은 곳에서 일어나지만 큐는 다른 쪽에서 일어남 삽입삭제에 쓰이는 변수: 스택에서는 top이라는 변수 1개 존재, 큐에서는 삽입-rear, 삭제-front 사용 (배열과 연결리스트로 구현) 5.2 선형큐ex. 1차원 배열 쓰는 방법 : (정수저장큐 만든다 가정) 먼저 정수 1차원 배열 정의 - > 삽입, 삭제 위한 변수 front와 rear 만듦ㄴ front 와 rear의 초기값 : -1 (같음) . [실행] 데이터 증가> rear 하나 증가>그 위치에 데이터 저장 삭제할 때도 front 하나 증가> front가 가리키는 위치에 있는 데..

자료구조 2024.10.17

[자료구조] chap4. 스택

4.1 스택이란? -스택: 뭔가를 쌓아놓은 더미, 후입선출 입출력은 맨 위에서만 일어나고 스택의 중간에서는 데이터를 삭제할 수 없다. 스택 상단 : 입출력이 이루어지는 부분스택 하단: 반대쪽 바닥부분요소: 스택에 저장되는 것공백 스택: 스택에 요소가 하나도 없을 때*자료 출력순서가 입력순서 역순으로 이루어져야 할 경우 유용*함수호출 이후 자신을 호출한 함수로 되돌아갈 때 호출된 역순으로 되돌아가야 하므로 스택 사용(복귀할 주소 기억에 사용) -시스템 스택에는 함수가 호출될때마다 활성레코드가 만들어지며 여기에 복귀주소가 저장된다. (활성레코드에는 프로그램 카운터, 함수호출시 매개변수, 함수 안에서 선언된 지역 변수 같이 생성)  -함수호출 일어나면 항상 시스템 스택에 동일한 방법으로 저장 > 함수가 자기 ..

자료구조 2024.10.16

[자료구조] chap3. 배열, 구조체, 포인터

3.1 배열-동일한 타입의 데이터 한 번에 여러 개 만들 때 사용.-배열 사용하면 연속적 메모리 공간이 할당되고 인덱스번호 사용하여 쉽게 접근 가능, 반복루프 이용 -배열 ADT: 배열은 의 쌍으로 이루어진 집합(index 주어지면 해당 value가 대응)ㄴ연산: set(주어진 인덱스에 값 저장), get(인덱스 주어지면 값 추출) 1차원배열:  *인덱스 0부터 시작    컴파일러: 배열에 메모리의 연속된 위치에 할당> list[0] 이 기본주소(base)프로그램에 list[i]라 적으면 컴파일러는 base+i*sizeof(int)에 있는 값 가져옴 2차원 배열: list[0][0] 0행 0열에서 시작.  3.2 구조체 -구조체: 타입이 다른 데이터 묶는 방법, struct 키워드 써서 표기  구조체 t..

자료구조 2024.10.12

[자료구조] chap2. 순환

2.1 순환의 소개-순환: 어떤 알고리즘이나 함수가 자기 자신을 호출하여 문제 해결하는 프로그래밍기법 ex. 피보나치 수열        -순환 알고리즘: 자기 자신을 순환적으로 호출하는 부분+ 순환 호출을 멈추는 부분-순환 호출이 끝에서 이루어지는 꼬리순환은 반복알고리즘으로 쉽게 바꿔 쓸 수 있다.[순환 vs 반복]ㄴ순환: 알고리즘 명확 간결,  반복에 비해 수행속도 느림, 여분의 기억공간 더 필요. 함수 호출 위해서 함수 매개변수들을 스택에 저장하는 사전작업 필요ㄴ반복: 지나치게 복잡해질수도 있음 -순환의 분할정복: 주어진 문제를 더 작은 동일한 문제들로 분해하여 해결-성능: O(n) 2.2 거듭제곱값 계산-팩토리얼에서는 반복이 순환보다 빠름-거듭제곱에서는 순환이 반복보다 빠름        2.3 피보..

자료구조 2024.10.07

[자료구조] chap1. 자료구조와 알고리즘

1.1 자료구조와 알고리즘 - 자료구조: 스택(먼저들어온게 나중에나감), 큐(먼저들어온게 먼저나감), 리스트, 사전, 그래프, 트리 - 프로그램=자료구조+알고리즘 - 알고리즘의 조건: 입력-0개이상/ 출력-1개이상/명백성(명령어 의미 명확해야함), 유한성(한정된 수의 단계 후 반드시 종료), 유효성(각 명령어가 실행가능해야 함) - 알고리즘 기술방법: 자연어(영어,한국어 등), 흐름도, 의사코드, 프로그래밍 언어 - 자료형(데이터의 종류): 정수, 실수, 문자열 1.2 추상 데이터 타입 - 추상데이터타입(ADT:abstract data type) 데이터 타입 추상적으로 정의한것): 데이터나 연산을 어떻게 적용할건지는 정의 안함. >정보은닉기법>추상자료형(ADT)  ㄴ객체: 추상데이터타입에 속하는 객체 정..

자료구조 2024.09.24