A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Similar documents
Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

Chapter 4. LISTS

06장.리스트

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

슬라이드 1

1장. 리스트

chap 5: Trees

Chapter 4. LISTS

Algorithms

11장 포인터

Lab 3. 실습문제 (Single linked list)_해답.hwp

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

PowerPoint 프레젠테이션

03_queue

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

슬라이드 1

Microsoft PowerPoint - 자료구조2008Chap06

Chapter 4. LISTS

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74

Microsoft PowerPoint - chap4_list

1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ

<4D F736F F F696E74202D FBFACB0E120C0DAB7E1B1B8C1B6205BC8A3C8AF20B8F0B5E55D>

리스트구현방법 배열 (array) 을이용하는방법 구현이간단 삽입, 삭제동작에따른원소이동. 항목의개수제한, 정적기억공간할당. 메모리낭비, 오버플로우 연결리스트 (linked list) 를이용하는방법 구현이복잡 삽입, 삭제가효율적 크기가제한되지않음 Lecture 03_Li

Microsoft PowerPoint - 08-Queue.ppt

슬라이드 1

중간고사 (자료 구조)

Microsoft PowerPoint - 08-chap06-Queue.ppt

리스트연산, 검색 + 삽입 + 삭제 새로운항목을리스트의처음, 중간, 끝에추가. 기존의항목을리스트의임의의위치에서삭제. 모든항목을삭제. 기존항목을대치 (replace). 리스트가특정항목을가지고있는지를검색 (search). 리스트의특정위치의항목을반환. 리스트안의항목의개수를센

슬라이드 1

C 언어 강의노트

01_List

5.스택(강의자료).key

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

chap01_time_complexity.key

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

Lab 5. 실습문제 (Double linked list)-1_해답.hwp


q 이장에서다룰내용 1 연결자료구조방식 2 단순연결리스트 3 원형연결리스트 4 이중연결리스트 3 다항식의연결자료구조표현 2

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

untitled

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Template

슬라이드 1

기초컴퓨터프로그래밍

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

02장.배열과 클래스

03장.스택.key

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Chap 6: Graphs

Microsoft PowerPoint - chap11-포인터의활용.pptx

4장

슬라이드 1

Microsoft PowerPoint - Chapter_09.pptx

Chapter #01 Subject

슬라이드 1

슬라이드 1

슬라이드 1

Microsoft PowerPoint - 06-List.ppt

슬라이드 1

ABC 10장

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

Microsoft PowerPoint - chap10-함수의활용.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

Chap 6: Graphs

UI TASK & KEY EVENT

Microsoft PowerPoint - 제6장-연결리스트.pptx

05_tree

Chap 6: Graphs

OCaml

Frama-C/JESSIS 사용법 소개

chap8.PDF

7장

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

chap 5: Trees

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

CompareAndSet(CAS) 함수는 address 주소의값이 oldvalue 인지비교해서같으면 newvalue 로 바꾼다. 소프트웨어 lock 을사용하는것이아니고, 하드웨어에서제공하는기능이므로더빠르고 간편하다. X86 에서는 _InterlockedCompareEx

untitled

4장

Microsoft PowerPoint - 07-chap05-Stack.ppt

Microsoft PowerPoint - 제4장-스택과큐.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

11장 포인터

Microsoft PowerPoint - ch07_스택 [호환 모드]

슬라이드 1

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

1장. 유닉스 시스템 프로그래밍 개요

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

Transcription:

단일연결리스트 (Singly Linked List) 신찬수

연결리스트 (linked list)? tail 서울부산수원용인 null item next

구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct name_card * p = &a; // 구조체의포인터변수선언 p->name 또는 p->date // 구조체포인터변수를통한멤버접근 typedef struct name_card * ptr_card; // typedef을이용한선언 ptr_card p = &a;

정수자료값을저장한연결리스트 연결리스트는노드 (node) 들이링크 (link) 에의해연결된기차형태의자료구조 하나의노드는자료가저장되며, 동시에다음노드를가르키는링크도저장되어야한다 구조체사용! item : 정수자료값저장 next : 다음노드로의링크 typedef struct node_elm* node; struct node_elm { }; int item; node next; 20 item next

세개의노드를갖는연결리스트 20 33 56 null

헤드에새로운노드삽입 (insert) 20 33 56 null 78 20 33 56 null

헤드에새로운노드삽입 new_node 78 20 33 56 null node insertathead( node, int value ) { node new_node = (node)malloc( sizeof(struct node_elm) ); new_node->item = value; new_node->next = ; return new_node; }

헤드노드를연결리스트에서삭제 78 20 33 56 null node deletefromhead( node, int *item ) { // 새로운헤드리턴 if (!= null ) { node old = ; = ->next; *item = old->item; free(old); return ; } else printf( List is empty.\n );

연결리스트로구현한스택 typedef struct linkedstack* Lstack; struct linkedstack { node top; int size; }; Lstack createstack( void ){ Lstack S = (Lstack) malloc( sizeof(struct linkedstack) ); S->top = null; S->size = 0; return S; }

연결리스트로구현한스택 int stacksize( Lstack S ) { return S->size; } int stackempty( Lstack S ) { return ( S->size == 0 ); }

연결리스트로구현한스택 void push ( Lstack S, int value ) { 52 S->top = S->size++; } top 52 33 56 null

연결리스트로구현한스택 top int pop( Lstack S ) { int value; S->top = S->size--; return value; } 52 33 56 null top 52 33 56 null

연결리스트로구현한큐? 연결리스트로큐를구현하기위해선, 꼬리 (tail) 노드를삭제하는함수 ( 연산 ) 가필요하다 deletefromtail( ) 어떤값을파라미터로넘겨줘야하나? 리턴해야할내용은무엇인가? 노드만알고있는데, 어떻게 tail 노드를알아야하나? tail 노드를알게되었다면, 주위의노드들의링크를어떻게변경해야하나? ( 그림으로그려확인해볼것!) 특별한경우 예 : 빈리스트인경우에는어떻게처리할것인가?

tail 노드를삭제하는연산 tail 78 20 33 56 null tail 78 20 33 null

변경되어야할노드의링크들 78 20 33 56 null 78 20 33 null

deletefromtail 78 20 33 56 null tail의노드의직전노드 (prev) 를어떻게찾나? node tail, prev = null; if ( == null ) { printf( List is empty\n ); return null; } for ( tail = ; tail->next!= null ; tail = tail->next ) prev = tail;

deletefromtail prev tail 78 20 33 56 null prev->next = tail->next; free(tail);

deletefromtail node deletefromtail( node, int *value) { // return node tail, prev = null; if ( == null ) { printf( List is empty.\n ); return null; } for ( tail = ; tail->next!= null ; tail = tail->next ) prev = tail; if (prev!= null) prev->next = tail->next; *value = tail->item; free(tail); if (prev == null) return null; } else return ;

특정노드삭제하기 prev x tail 78 20 33 56 null tail 78 20 56

특정값을저장한노드삭제하기 node search( node, int value ); value 값이저장된노드가있다면찾아리턴하고, 없으면 null 리턴 node x; int item; x = search(, value ); deletenode(, x, &item );

deletenode node deletenode( node, node x, int *item) { node tail, prev; if ( == null x == null ) return ; if ( x == ) return deletefromhead(, item ); if ( x->next == null ) return deletefromtail(, item ); // x == tail for ( prev = ; prev->next!= x; ) // prev->next == x가되도록 prev = prev->next; prev->next = x->next; *item = x->item; free(x); return ; // 가바뀌지않는다. 왜? }

원형리스트 (Circular list) 78 tail 20 33 56 null tail dummy 노드가항상 tail 노드가되도록함. - dummy 노드의 값은 INT_MAX 로표현. tail 78 20 33

insertatfront( node tail, int value ) tail 20 33 56 tail 78 20 33 56

deletenode deletenode( node tail, node x, node px ); 어떻게?

원형리스트를이용한 Josephus 문제 People sit around a round table. From a person, count the people in clockwise order, kill the k-th person, and then the person is out from the table. Who is the last survivor?

Josephus problem (k = 3) 8 9 1 2 8 9 1 2 7 3 7 3 6 5 4 6 5

Josephus problem (k = 3) 7 9 1 7 9 1 7 1 2 6 2 6 2 6 5 5 1 3 1 2 7 5 1 2 7 5 1 2