
모듈 1. 스택 ADT와 순차 표현 1. 스택 추상 데이터 타입 1) 스택(Stack)이란? "쌓아 놓은 더미" - 정의: 삽입과 삭제가 한쪽 끝, top에서만 이루어지는 유한 순서(순서가 중요한) 리스트 - finite ordered list 2) 스택의 특징 - 후입선출(LIFO:Last-In First-Out, FILO: First-In Last-Out 구조) 리스트 특징: 가장 최근에 들어온 데이터가 가장 먼저 나감 기능: 삽입(push), 삭제(pop) 별명: 스택을 pushdown 리스트라고도 함 3) 스택 기본 연산 - push(): 스택에 데이터를 추가 - pop(): 스택에서 데이터를 삭제 - create(): 빈 스택을 생성 - is_empty(s): 스택이 공백 상태인지 검사 - is..

1. 헤더 노드 1) 기존 연결 리스트 처리 알고리즘 - 문제점: 첫 번째 노드나 마지막 노드, 그리고 리스트가 공백인 경우에 따라 처리 방법이 각기 달라, 서로 예외적인 경우로 처리해야 함 2) 헤더 노드(header node)를 추가하는 방법 - 상기 문제가 되는 예외 경우를 가급적 제거하고, 코드를 간단하게 하기 위한 해결책으로 사용 가능 - 헤더 노드에는 리스트를 처리하는데 1️⃣필요한 포인터나 2️⃣통계 정보를 미리 저장 리스트의 첫 번째 노드를 가리키는 포인터 리스트의 길이 마지막 노드를 가리키는 포인터 등의 필요 정보 ⭐헤더 노드의 구조가 리스트의 노드 구조와 달라도 문제 없음 3) 헤더 노드를 가진 연결 리스트의 정의 typedef struct listNode { /*리스트 노드 구조*/ ..

모듈1. 자유 공간 리스트 1) 메모리의 획득과 반납 방법 (1) 연결 리스트가 필요로 하는 두 가지 연산 [방법 1] : 데이터 필드와 링크 필드를 가진 하나의 공백 노드를 획득하는 방법 (프로그램 수행 중, 즉석에서 필요한 메모리를 OS에서 malloc()하는 방식) [방법 2] : 사용하지 않는 노드는 다시 반납하여 재사용하는 방법 (미리 malloc()하여 free space list를 만든 후, 여기서 할당/회수하는 방식) (2) [방법 2] 자유 공간 리스트(free space list)를 만들어 놓은 경우 - OS와 분리를 해보자! 추가로 우리가 만들어야 하는 함수1 : getNode() - malloc() 대응 : 데이터와 링크 필드로 되어 있는 새로운 공백 노드를 free space li..

1. 단순 연결 리스트의 구체적 구현(C Implementation) 1) 리스트 생성 알고리즘 2) 원소를 첫 번째 노드로 삽입 3) 노드의 삽입 - 주어진 리스트 L에서 원소 값이 x인 노드를 p가 가리키는 노드 다음에 삽입 - 코드로도 확인해보자 insertNode(L, p, x) // 리스트 L에서, p 노드 다음에 원소 x를 삽입 // p가 null인 경우는, 현재 pointing하는 노드가 없는 경우임 newNode

1. 단순 연결 리스트의 정의 및 특징 정의: 하나의 링크 필드를 가진 노드들이, 모두 자기 후속 노드와 연결되어 있는 노드 열(list) 특징: 마지막 노드의 링크 필드는 리스트의 끝을 표시하는 null 값을 가짐 별칭: 선형 연결 리스트(linear linked list), 단순 연결 선형 리스트(singly linked linear list), 연결 리스트(linked list), 체인(chain) 2. 삽입과 삭제 연산 개념 1) 원소 삽입 연산 (1) Node 삽입 연산이란? list에는 포인터 변수, ptr이 가리키는 list로서, 기존에 10과 20이 있음. list의 추적을 위한 포인터 변수, node_tracer를 선언하고 이를 ptr과 같은 노드를 지칭하게 함 50을 가진 새로운 노드를..

1. 노드와 포인터 1) 배열의 순서 리스트 표현 리뷰 - Orderd list(순서 리스트)에 있어서 임의의 위치에 대한 삽입, 삭제 비용이 크다. [bat, cat, nature, orphan, test] -> 이들은 물리적 메모리 공간에 연속적으로 write되는 특성을 가진다! "Fast but inconvenient!!" - 순서 리스트 L의 순차 표현과 원소 삽입 - 순서 리스트 L의 원소 삭제 - 배열로 순서 리스트를 표현할 때 장점 1️⃣ 표현이 간단함 2️⃣ 빠른 임의 접근(Immediate Random Access): 인덱스는 직접 메모리 주소로 변환할 수 있기 때문에 원소 접근이 빨라짐 - 배열로 순서 리스트를 표현할 때 단점 1️⃣ ! 순차적으로만 ! 표현할 수 있음 2️⃣ 어떤 작업..

모듈1. 희소 행렬 ADT 1) Sparse Matrix란? - 일반적으로 matrix는 m개의 행(row)과 n개의 열(column)로 구성되며, m * n(m by n으로 읽음)으로 표시된다. - 36개 element 중 8개의 element만이 non-zero임 → Sparse Matrix(희소 행렬): 0이 아닌 element가 희소한 행렬 2) Sparse Matrix의 표현 2차원의 경우는 (row, col, Non-0 value)로 표현됨 3차원의 경우는 (row, col, depth, Non-0 value)로 표현됨 3) Sparse Matrix ADT(2차원) 모듈2. 희소 행렬 연산의 C 구현 참고하면 좋을 블로그 https://m.blog.naver.com/nabilera1/22204..

모듈1. C에서의 데이터 타입 1) 선언과 정의 선언(declaration)과 정의(definition)를 구분하는 기준은 "memory address binding의 유뮤" 어떤 대상의 이름에 대해 그에 대응하는 메모리 상의 주소가 정해진다면 그것은 정의 그렇지 않고 이름만 알려준다면 그것은 선언 int x;//선언함과 동시에 변수를 정의함 int x = 5;//선언함과 동시에 변수를 정의하고, 값을 할당함 int x(){ return 0; }// 선언과 동시에 정의, 호출 시 jump해야 하기 때문 struct x { int i; } // 선언과 동시에 정의 // 구조체가 구조체 변수로 인스턴스화 할 때 어떻게 메모리가 배치될 지를 알려주는 문장 extern int x;// 선언, 다른 모듈에서 정의..
- Total
- Today
- Yesterday
- C99
- 직사각형
- 26069
- 약수들의합
- 칸토어 집합
- C언어
- SWLIfeCycle
- SW생명주기
- 25314
- 데이터추상화
- 과제안내신분
- 백준
- 붙임성 좋은 총총이
- 브라우저
- 파이썬
- 피보나치수5
- 베라의 패션
- 개발계발
- 브라우저뜻
- 알고리즘
- 삼각형과세변
- 25304
- python
- 4779
- 점근적표기
- 27323
- 다음소수
- 배수
- 배수와약수
- 약수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |