자료구조: CHAP 4 리스트 (3) 2017. 5. 2 순천향대학교 컴퓨터공학과 하 상 호.

Slides:



Advertisements
Similar presentations
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
Advertisements

C언어 응용 제 6 주 연결 자료구조.
제14장 동적 메모리.
5장 큐.
Chapter 04. 연결 리스트(Linked List) 2
연결리스트(linked list).
제 9 장 구조체와 공용체.
Linked List 학기 SANGJI University.
Chapter 05. 연결 자료 구조.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
자료 구조: Chapter 3 (2)구조체, 포인터
head data link data link data link NULL a b c
단순 연결 리스트 순차(sequential) 표현 연결된(linked) 표현 연속된 원소들이 일정한 거리만큼 떨어져서 저장
제 3 장 선형 리스트 3.1 선형 리스트 3.2 연결 리스트 3.3 다항식.
CHAP 4:리스트 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 6:큐.
강의 #6 큐(Queue).
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
다음 주 과제 7장 읽어오기 숙제 해서 다음 주(11월 12일) 제출하기. 큐(Queue) E304호,
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
자료구조: CHAP 6 큐 컴퓨터공학과 하 상 호.
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
제 5 장. 스택(Stack).
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
Dynamic Memory and Linked List
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
CHAP 6:큐.
자료구조: CHAP 4 리스트 (1) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 4:리스트.
CHAP 6:큐.
제 2장 리스트.
자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
공학컴퓨터프로그래밍 Python 염익준 교수.
제 4 장 스택과 큐 4.1 스택(stack) 4.2 스택의 활용 4.3 큐 4.4 데큐.
Introduction To Data Structures Using C
CHAP 10:그래프 (2) 순천향대학교 하상호.
자기참조 구조체(1) 먼저 자신과 같은 형의 구조체를 포인트하는 포인터 멤버 필드를 갖는 구조체를 정의한다.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Tree & Heap SANGJI University Kwangman Ko
* 프로그램을 간단히 하기 위해 malloc 성공체크는 안 함
Chapter 04 리스트.
프로그래밍 언어론 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
C언어 응용 제7주 실습 해보기 제6장.
자료구조: CHAP 7(2) 트리 순천향대학교 컴퓨터공학과 하 상 호.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
강의 소개 컴퓨터시뮬레이션학과 2017년 봄학기 담당교수 : 이형원 E304호,
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
데이터 동적 할당 Collection class.
자료구조론 8장 큐(queue).
보고서 #2(제출기한: 09/23) 다음 문제를 해결하시오. (7)
발표자 : 이지연 Programming Systems Lab.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
제 2장 연결리스트.
13. 포인터와 배열! 함께 이해하기.
Power Point 예제 디자인 적용 (서식) - (디자인적용) - (원하는 디자인 선택)
C++ Espresso 제15장 STL 알고리즘.
제 4 장. 리스트(List).
Presentation transcript:

자료구조: CHAP 4 리스트 (3) 2017. 5. 2 순천향대학교 컴퓨터공학과 하 상 호

목차 리스트 추상 데이터 타입 배열로 구현된 리스트 단순 연결 리스트 원형 연결리스트 이중 연결리스트

원형 연결 리스트 연결 리스트에서 마지막 노드가 첫번째 노드를 가리키게 한다. 이점: 한 노드에서 임의 노드로 접근 가능 삽입, 삭제 연산 고려 head NULL …

삽입 연산: 원형 연결 리스트 첫번째 노드로 삽입 head NULL … node procedure insert_first(head: nodeptr, node: nodeptr) // head: 헤드 포인터 // node: 삽입될 노드

삽입 연산: 원형 연결 리스트 head NULL … node

삽입 연산: 원형 연결 리스트 마지막 노드로 삽입(self) node head NULL … procedure insert_last(head: nodeptr, node: nodeptr) // head: 헤드 포인터 // node: 삽입될 노드

원형 연결 리스트 수정 헤드 포인터가 첫번째가 아닌 마지막 노드를 가리키게 변경하면? head NULL …

삽입 연산: 수정 원형 연결 리스트 첫번째 노드로 삽입(헤드가 첫번째 노드가리키는 경우와 비교) head NULL … node procedure insert_first(head: nodeptr, node: nodeptr) // head: 헤드 포인터 // node: 삽입될 노드

삽입 연산: 수정 원형 연결 리스트 마지막 번째 노드로 삽입 node 마지막 번째 노드로 삽입 head NULL … procedure insert_last(head: nodeptr, node: nodeptr) // head: 헤드 포인터 // node: 삽입될 노드

display: 수정 원형 연결 리스트 procedure display(head: nodeptr) // 수정 필요 NULL … procedure display(head: nodeptr) // 수정 필요 // head: 헤드 포인터 // 리스트에 포함된 모든 노드 방문

질문 단순 연결 리스트나 원형 연결 리스트 상에서 특정 노드에서 선행 노드를 찾고자 한다면? 삽입, 삭제시에 반드시 선행 노드가 필요함 헤드포인터 10 20 NULL 30 50 40 head NULL …

이중 연결 리스트 노드가 선행 노드와 후속 노드에 대한 각각의 링크를 갖는 리스트 노드 구조: (llink, data, rlink) llink data rlink typedef int element; typedef struct node node; typedef node* nodeptr; typedef struct node { element data; nodeptr llink; nodeptr rlink; } node;

헤더 노드 데이터를 가지지 않고 단지 삽입, 삭제 코드를 간단하게 할 목적으로 만들어진 특별한 노드 공백상태에서는 헤드 노드만 존재 헤드 포인터와 같은 역할 마지막 노드 삽입, 삭제시 효율적 p = p.llink.rlink = p.rlink.llink 헤드 노드 p

삽입 연산: 이중 연결 리스트 procedure dinsert_node(before: nodeptr, new: nodeptr) (1) (2) (3) (4) before new_node procedure dinsert_node(before: nodeptr, new: nodeptr) // before: 이전 노드 // node: 삽입될 노드

삭제 연산: 이중 연결 리스트 removed procedure ddelete_node(head: nodeptr, removed: nodeptr) // head: 헤더 노드 // removed: 삭제될 노드

10주차 실습 과제 (due 5/10) 프로그램 4.29를 이해하여 다음을 수행하시오. 수업에서 정의한 node, nodeptr의 타입을 이용할 것 ‘*’의 타입 연산자가 나타나지 않게 할 것 …