연결리스트(linked list).

Slides:



Advertisements
Similar presentations
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
Advertisements

C언어 응용 제 6 주 연결 자료구조.
UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
적외선으로 감지하는 추적 카메라 조원 : 최승호, 백진영, 이현지.
제14장 동적 메모리.
Chapter 04. 연결 리스트(Linked List) 2
제 9 장 구조체와 공용체.
Linked List 학기 SANGJI University.
Chapter 05. 연결 자료 구조.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
자료 구조: Chapter 3 (2)구조체, 포인터
head data link data link data link NULL a b c
제 3 장 선형 리스트 3.1 선형 리스트 3.2 연결 리스트 3.3 다항식.
CHAP 4:리스트 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
자료구조: CHAP 6 큐 컴퓨터공학과 하 상 호.
제 5 장. 스택(Stack).
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
Dynamic Memory and Linked List
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Error Detection and Correction
자료구조: CHAP 4 리스트 (1) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 4:리스트.
제 2장 리스트.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
제 4 장 스택과 큐 4.1 스택(stack) 4.2 스택의 활용 4.3 큐 4.4 데큐.
Introduction To Data Structures Using C
자바 5.0 프로그래밍.
자기참조 구조체(1) 먼저 자신과 같은 형의 구조체를 포인트하는 포인터 멤버 필드를 갖는 구조체를 정의한다.
인터넷응용프로그래밍 JavaScript(Intro).
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
8장. 상호 배타적 집합의 처리.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
* 프로그램을 간단히 하기 위해 malloc 성공체크는 안 함
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
USN(Ubiquitous Sensor Network)
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
논리회로 설계 및 실험 5주차.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제4강 처리장치 1.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
강의 소개 컴퓨터시뮬레이션학과 2017년 봄학기 담당교수 : 이형원 E304호,
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
데이터 동적 할당 Collection class.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 1 단위, 물리량, 벡터.
AT MEGA 128 기초와 응용 I 기본적인 구조.
Chapter 1 단위, 물리량, 벡터.
9 장 오류 검출 및 오류 정정 9.1 오류 종류 9.2 검출 9.3 오류 정정 9.4 요약.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
구조체(struct)와 공용체(union)
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
 6장. SQL 쿼리.
CODE INJECTION 시스템B 김한슬.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
6 객체.
타이머를 시작하려면 슬라이드 쇼 메뉴에서 쇼 보기를 클릭하십시오.
제 4 장. 리스트(List).
Presentation transcript:

연결리스트(linked list)

목 차 링크드 리스트의 개요 링크드 리스트의 종류

링크드 리스트의 개요 일정한 순서를 가지는 데이터 요소들을 표현하는 방법 중의 하 나이다. 배열과 다르게 데이터 요소들의 논리적인 순서만 유지되고 기 억 장소 내에서는 각 데이터 요소들은 논리적인 순서와는 상관없는 임의의 위치 를 가지도록 하는 자료 구조이다. 연결리스트에서는 각 데이터 요소들이 기억 장소 내의 어떤 위 치에 어떤 항목이 있는지를 표시해 주어야 한다. 이를 위해 데이터 요소에는 데이 터 값, 위치 정보 도 저장해 주어야 한다. 즉, 배열에서의 단점을 제거하면서 메모리를 효율적으로 사용 하고 삽입과 삭제 가 쉬워 처리 시간이 단축되나, 관리 유지에 부가적 비용이 든다.

링크드 리스트의 개요(계속) head->next->next->data B C D 256 300 128 400 NULL head head->next head->next->next->next head->next->next head->data head->next-> data head->next->next->data < 연결리스트의 구조>

링크드 리스트의 개요(계속) 예 struct person{ char name[20]; struct person *next; }; struct person *new; struct person *head; head = NULL; new = (person *)malloc(sizeof(struct person)); new->next = head; head = new;

head->next-> data head->next->next 링크드 리스트의 개요(계속) A B C D 256 300 128 400 NULL head head->next head->data head->next-> data head->next->next <삭제>

링크드 리스트의 개요(계속) 삽입 예 person *marker; new = (LINK)malloc(sizeof(person)); new->next = marker->next; marker->next = new;

링크드 리스트의 개요(계속) F head->next->next head->next-?next-> data B C D 256 300 128 400 NULL head head->next head->next->next->next->next head->next->next head->data head->next-> data head->next->next->next->data <삽입> F head->next-?next-> data head->next->next->next

링크드 리스트의 개요(계속) 삭제 (예) person *current1, *current2; current1 = head; current2 = current1->next; while(current2->next != NULL) { current1 = current2; } free(current1->next); current1->next = null; if(head == current1) head = null;

링크드 리스트의 종류 단일 연결리스트(singly linked list) 포인터를 이용해서 한 쪽방향으로만 연결되어 있는 구조 환형 연결리스트(circular linked list) 환형큐와 마찬가지로 마지막 노드에서 처음 노드로 연결하여 원형으로 된 구조 이중 연결리스트(doubly linked list) 한 쪽방향으로만 연결 된 경우 반대 방향의 노드를 접근하기 어렵다는 단점을 보안, 양방향으로 포인터를 이용해서 연결한 구조

링크드 리스트의 종류(계속) 구조가 간단하고, 기억 장소의 소모가 적은 반면에 역방향으로 리스트를 검색할 수 없음 구조가 간단하고, 기억 장소의 소모가 적은 반면에 역방향으로 리스트를 검색할 수 없음 -> 노드를 삽입하거나 삭제하려면 별도의 포인터가 필요 위 단점을 해결하기 위해 이중 연결리스트(doubly linlked list)를 사용

링크드 리스트의 종류(계속) - 이중 연결리스트의 구조 노드가 양쪽 방향으로 연결되어 있는 리스트 이중 연결리스트의 구조 오른쪽 방향 : rlink(선행 노드) 왼쪽 방향 : llink(후행 노드) llink data rlink 이중연결리스트의 노드 구조

링크드 리스트의 종류(계속) 이중 연결리스트의 장단점 단일 연결리스트는 오직 하나의 연결 부분(링크필드)을 가지고 있지만, 이중연결 리스트는 연결부분을 두개로 하여 한 개일 때 보다는 기억장소의 낭비가 있지만 효율적인 리스트 운영이 가능

링크드 리스트의 종류(계속) 이중 연결리스트의 동작 노드삽입 노드삭제 head NULL NULL X head A B C D NULL NULL <이중연결리스트의 노드 삽입> head A B C D NULL NULL <이중연결리스트의 노드 삭제>

링크드 리스트의 종류(계속) - 환형 연결리스트 (circular Linked List) 맨 마지막 노드의 포인터를 NULL로 하는 대신에 맨 앞의 노드에 연결시켜서 원형구조를 만든것. 환영 연결리스트의 구조 head A B C D <환형연결리스트의 구조>