반응형

연결리스트 13

[C언어 자료구조] 3.4 연결리스트 소스 코드

[C언어 자료구조] 3.4 연결리스트 소스 코드//common.h #pragma once //헤더 파일을 한 번만 포함해서 컴파일 #include #include #include #include #include #include #include #pragma warning(disable:4996) //4996컴파일 경고 메시지 출력 해제 //Book.h #pragma once #include "common.h" #define MAX_TIT_LEN 200 #define MAX_AUT_LEN 20 typedef struct _Book Book; struct _Book { char title[MAX_TIT_LEN+1]; char author[MAX_AUT_LEN+1]; int num; }; Book *New_B..

[C언어 자료구조] 3.3 연결리스트 테스트

[C언어 자료구조] 3.3 연결리스트 테스트 연결리스트를 사용하는 방법은 순차적으로 보관하거나 원하는 위치를 찾아 보관하는 방법이 대표적입니다. 동적 배열에서는 이 외에도 인덱스를 사용하는 방법이 있었지만 연결리스트를 사용할 때는 이 방법은 사용하지 않습니다. 따라서 테스트 코드는 크게 순차 보관하는 시뮬레이션과 원하는 순서로 보관하는 예로 구성할게요. int main() { Simul_Seq(); Simul_Order(); return 0; } 먼저 순차적으로 보관하는 테스트 코드를 작성합시다. void Simul_Seq() { 먼저 연결리스트를 동적으로 생성합니다. LinkedList *linkedlist = New_LinkedList(); 그리고 도서 개체를 생성하여 연결리스트에 순차 보관합니다. ..

[C언어 자료구조] 3.2 연결리스트 구현

[C언어 자료구조] 3.2 연결리스트 구현 연결리스트를 동적으로 생성하는 함수를 작성합시다. LinkedList *New_LinkedList() { LinkedList *linkedlist = 0; 먼저 LinkedList 형식 크기의 메모리를 할당합니다. linkedlist = (LinkedList *)malloc(sizeof(LinkedList)); 그리고 head와 tail에 더미 노드를 생성합니다. 노드를 생성하는 함수는 별도로 작성합시다. linkedlist->head = New_Node(0); linkedlist->tail = New_Node(0); head의 next링크를 tail을 가리키게 하고 tail의 prev 링크를 head를 가르키게 합니다. linkedlist->head->next..

[C언어 자료구조] 3.1 연결리스트 설계

[C언어 자료구조] 3.1 연결리스트 설계 동적 배열처럼 연결리스트도 동적으로 생성한 개체는 형식에 관계없이 보관할 수 있게 정의할게요. 사용하기 편리하게 void * 형식을 Element 형식으로 타입 재지정할게요. typedef void * Element; 연결리스트는 노드의 선형 집합입니다. 노드는 링크와 데이터의 조합으로 여기에서는 두 개의 링크를 갖는 노드를 정의할 것입니다. typedef struct _Node Node; typedef Node *Link; struct _Node { Link next; Link prev; Element data; }; 연결리스트 구조체에는 맨 앞에 있는 더미 노드의 위치 정보인 head와 맨 뒤에 있는 더미 노드의 위치 정보인 tail과 보관한 자료 개수를 멤..

[C언어 자료구조] 3. 연결리스트

연결리스트는 노드의 선형 집합입니다. 노드란 데이터와 링크의 조합으로 하나의 데이터를 보관하는 작은 저장소입니다. 그리고 링크는 노드의 위치 정보입니다. [그림 3.1] 연결리스트 연결리스트는 노드에 링크가 하나만 있는 단일(단순) 연결리스트와 링크가 두 개 있는 이중 연결리스트로 구분할 수 있습니다. 이 책에서는 노드에 이전 노드의 위치 정보를 가르키는 링크와 다음 노드의 위치 정보를 가르키는 링크를 갖고 있는 이중 연결리스트를 만들고 사용하는 방법을 소개할 것입니다. 특히 연결리스트를 생성할 때 연결리스트의 맨 앞과 맨 뒤에 더미 노드를 생성하여 자료를 보관하는 노드들을 이들 사이에 배치할게요.[C언어 자료구조] 3.1 연결리스트 설계[C언어 자료구조] 3.2 연결리스트 구현[C언어 자료구조] 3.3..

온라인 무료 공개 [디딤돌 자료구조와 알고리즘 C++]

온라인 무료 공개 [디딤돌 자료구조와 알고리즘 C++]책 소개 이 책에서는 컴퓨터 프로그래머의 기초 지식인 알고리즘과 자료구조를 이론적인 접근과 실질적인 구현을 다루고 있어요.자료구조는 프로그램에 관라할 데이터를 어떠한 구조로 보관하고 접근할 것인가를 다루는 것입니다. 선형 자료구조인 배열이나 연결리스트, 스택, 큐와 비선형 자료구조인 트리, 그래프 등이 있습니다. “선형 자료구조에는배열, 연결리스트, 스택, 큐”“비선형 자료구조에는트리, 그래프” 알고리즘은 문제를 해결하기 위한 논리의 집합이예요. 문제 해결 방법으로 분류하면 반복 알고리즘, 재귀 알고리즘, 분할 정복, 동적 프로그래밍, 탐욕 알고리즘 등이 있죠.“반복 알고리즘, 재귀 알고리즘,분할 정복 알고리즘,동적 알고리즘,탐욕 알고리즘”컴퓨터 프로..

[디딤돌 자료구조와 알고리즘] 5. 선형 자료구조 - 개요

5. 선형 자료구조 이번 장에서는 선형 자료구조에 관하여 살펴봅시다. 이미 앞 장에서 비선형 자료구조인 이진 탐색 트리는 살펴보았습니다. 선형 자료구조는 자료를 보관하는 논리적인 구조를 하나의 선으로 나타낼 수 있습니다. 대표적인 선형 자료구조에는 배열과 연결리스트, 스택과 큐가 있습니다. 배열은 같은 형태의 자료를 연속적인 메모리에 관리하는 자료구조입니다. 그리고 연결리스트는 노드의 선형 집합이며 노드는 하나의 자료와 다른 노드의 위치 정보인 링크로 구성합니다. 스택과 큐는 단순히 자료를 보관하고 꺼내는 동작을 제공하며 스택은 최근에 보관한 자료를 꺼내는 LIFO(Last In First Out), 큐는 먼저 보관한 자료를 꺼내는 FIFO(First In First Out) 구조입니다. 관련 게시글 [..

[자료구조와 STL] 17. list 만들기 – 더미 노드없는 이중 연결 리스트

3. 2 list 만들기 – 더미 노드없는 이중 연결 리스트 이번에는 더미노드가 없는 이중 연결 리스트를 만들어 봅시다. 더미노드가 없는 이중 연결 리스트에도 node의 정의나 iterator의 정의는 차이가 없습니다. 여기에서는 차이가 있는 부분만 언급하겠습니다. 먼저, list를 생성했을 때의 초기 모습이 다를 것입니다. [그림 12] 더미노드 없는 이중 연결 리스트 초기화 모습 list(){ head = tail = 0; bsize = 0;} 생성자 메서드 외에 차이가 있는 부분은 노드를 매다는 hang_node와 노드의 연결을 끊는 dehang_hode와 시작 iterator를 반환하는 begin, 마지막 iterator를 반환하는 end가 있습니다. hang_node 메서드에서는 보관된 자료가 ..

디딤돌 자료구조와 알고리즘 C++

디딤돌 자료구조와 알고리즘 C++ 책 소개 자료구조는 자료를 메모리에 표현하는 구조를 말하며 크게 선형 자료구조와 비 선형 자료구조로 나눠요. 선형 자료구조에는 같은 종류의 자료를 연속적인 메모리에 관리하는 배열과 데이터와 링크로 구성하는 노드들의 선형 집합인 연결리스트가 있어요. 그리고 임시적으로 자료를 보관하는 버퍼로 가장 최근에 보관한 자료를 꺼내주는 스택(Last In First Out)과 가장 먼저 보관한 자료를 꺼내주는 큐(First In First Out)도 선형 자료구조인 배열이나 연결리스트를 이용한 잘 알려진 버퍼입니다. 비 선형 자료구조에는 나무의 뿌리처럼 자료를 보관하는 모습을 계층적으로 표현할 수 있는 트리와 정점과 간선으로 표현하는 그래프 등이 있어요. 이 책에서는 이러한 자료구조..

3.2 연결리스트와 list [디딤돌 자료구조와 알고리즘 with C++]

3.2 연결리스트와 list 연결리스트는 보관하는 자료마다 별도의 노드에 보관하며 노드에 링크를 이용해 논리적으로 선형을 유지하는 자료구조입니다. 따라서 연결리스트를 노드의 선형 집합이라고 말합니다. 배열은 자료를 보관하는 메모리가 연속적인 형태를 지녀 순차리스트라 부르는 순차 자료구조입니다. 이에 반해 연결리스트는 자료 하나를 보관하는 노드마다 별도의 메모리를 할당하여 실제 메모리는 불연속적인 형태입니다. 따라서 연결리스트는 순차 자료구조가 아닙니다. 하지만 노드는 자료와 링크로 구성하는데 링크를 통해 연결리스트를 구성하는 노드들의 논리적인 구조를 선형의 모습으로 표현할 수 있습니다. 이러한 이유로 연결리스트를 선형 자료구조라 말하는 것입니다. 링크는 노드의 위치 정보를 말하며 노드에 링크가 하나인 연..

반응형