Programming/자료구조
[자료구조] 양방향 연결 리스트
[자료구조] 양방향 연결 리스트
2020.07.12양방향 연결 리스트 머리(Head)와 꼬리(Tail)를 모두 가짐 각 노드는 앞 노드와 뒤 노드의 정보를 모두 저장 양방향 연결 리스트 삽입 과정 양방향 연결 리스트 삭제 과정 데이터를 오름차순으로 저장하는 양방향 연결 리스트 구현 typedef struct { int data; struct Node *prev; struct Node *next; } Node; Node *head, *tail; void Insert( int data ) { Node* node = (Node*)malloc(sizeof(Node)); node->data = data; Node* cur; cur = head->next; while( cur->data next; ..
[자료구조] 단일 연결 리스트
[자료구조] 단일 연결 리스트
2020.07.08단일 연결 리스트 포인터를 이용해 단방향적으로 다음 노드를 가리킴 하나의 구조체 안에 두 개의 변수가 들어감 : data, next (다음 위치를 가리키는 pointer) 일반적으로 연결 리스트의 시작 노드를(Head)라고 하며 별도로 관리 마지막(끝) 노드의 다음 위치 값으로는 NULL을 넣음 #include #include //!data = 1; Node *node2 = (Node*)ma..
[자료구조] 연결 리스트
[자료구조] 연결 리스트
2020.07.08연결 리스트의 필요성 일반적으로 배열을 사용하여 데이터를 순차적으로 저장하고, 나열할 수 있다. 하지만 배열을 사용하는 경우 메모리 공간이 불필요하게 낭비될 수 있음 배열 기반의 리스트 데이터를 순차적으로 저장하고 처리할 때는 배열 기반의 리스트를 이용 #include #define INF 10000 int arr[INF]; int count = 0; void addBack(int data) { arr[count] = data; count++; } //!= 1; i--) { arr[i] = arr[i-1]; } arr[0] ..
[자료구조] 자료구조의 개요
[자료구조] 자료구조의 개요
2020.06.27자료구조란? 대량의 데이터를 효과적으로 저장, 처리하는 방법 기본적인 자료구조 선형구조 배열 연결 리스트 스택 큐 비선형 구조 트리 그래프 알고리즘이란? 어떤 문제를 풀기 위한 절차, 방법 자료구조와 알고리즘 서로 필요충분조건이다. 효율적인 자료구조 설계를 위해서는 알고리즘 지식이 필요 ↔ 효율적인 알고리즘을 작성하기 위해서는 문제 상황에 맞는 적절한 자료구조 사용해야 함 프로그램의 성능 측정 방법론 시간 복잡도(Time Complexity) : 알고리즘에 사용되는 연산 횟수를 의미 공간 복잡도(Space Complexity) : 알고리즘에 사용되는 메모리 양 수행 시간 최상 : 오메가 표기법 (Big-Ω Notation) 평균 : 세타 표기법 (Big-θ Notation) 최악 : 빅오 표기법 (Big..