• 검색 결과가 없습니다.

원형 연결리스트

N/A
N/A
Protected

Academic year: 2022

Share "원형 연결리스트"

Copied!
12
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

제7강 연결리스트 응용

1

금오공과대학교 컴퓨터공학과

(2)

원형 연결리스트

• 원형 연결리스트

• 전체 노드의 수가 n일 경우

– 맨 처음 노드의 압쪽에 새로운 노드 삽입 : O(n) – 맨 마지막 노드의 뒤쪽에 새로운 노드 삽입 : O(n) – O(n)을 O(1)으로 줄일 주 있는 방법은?

head 포인터를 마지막 노드에 위치

2 금오공과대학교 컴퓨터공학과

head NULL NULL

head

NULL NULL

(3)

원형 연결리스트

• 맨 처음 노드 압쪽에 새로운 노드 삽입

• 맨 마지막 노드 다음에 새로운 노드 삽입

3 금오공과대학교 컴퓨터공학과

head

A B NULL C NULL D

… E

new_node (1)

(2)

new_node head

A B C NULL D NULL

(2) E (1)

(3)

(4)

원형 연결리스트(앞쪽 삽입)

// head: 리스트의 헤드 포인터

// p : 선행 노드, new_node : 삽입 노드

void insert_first(ListNode **head, ListNode *new_node) {

if( *head == NULL ){

*head = new_node;

new_node->link = new_node;

}

else {

new_node->link = (*head)->link;

(*head)->link = new_node;

} }

4 금오공과대학교 컴퓨터공학과

head

A B C NULL D NULL

… E

new_node (1)

(2)

(5)

원형 연결리스트(뒤쪽 삽입)

// head : 리스트의 헤드 포인터 // p : 선행 노드

// new_node : 삽입 노드

void insert_last(ListNode **head, ListNode *new_node) { if( *head == NULL ){

*head = new_node;

new_node->link = new_node;

} else {

new_node->link = (*head)->link;

(*head)->link = new_node;

*head = new_node;

} }

5 금오공과대학교 컴퓨터공학과

new_node head

A B C NULL D NULL

(2) E (1)

(3)

(6)

이중 연결리스트

• 하나의 노드가 선행 노드와 후속 노드에 대핚 두 개의 링크를 가짐

• 양방향 이동이 자유로움

• 메모리 사용이 증가(두 개 링크)

• 이중 연결리스트 예

금오공과대학교 컴퓨터공학과 6

(7)

이중 연결리스트(노드구조)

• 노드 구조

• 구조체 정의

typedef int element;

typedef struct DlistNode { element data;

struct DlistNode *llink;

struct DlistNode *rlink;

} DlistNode;

금오공과대학교 컴퓨터공학과 7

llink data rlink

(8)

이중 연결리스트(삽입연산)

void dinsert_node(DlistNode *before, DlistNode *new_node)

{

new_node->llink = before;

new_node->rlink = before->rlink;

before->rlink->llink = new_node;

before->rlink = new_node;

}

금오공과대학교 컴퓨터공학과 8

(1) (2) (3)

(4)

before

new_node

(9)

이중 연결리스트(삭제연산)

void dremove_node(DlistNode *phead_node,

DlistNode *removed)

{

if( removed == phead_node ) return;

removed->llink->rlink = removed->rlink;

removed->rlink->llink = removed->llink;

free(removed);

}

금오공과대학교 컴퓨터공학과 9

removed (1)

(2)

(10)

다항식 덧셈

• 연결리스트를 이용핚 다항식 표현

A=3x 12 +2x 8 +1

• 연결 리스트의 구조체 정의

typedef struct ListNode { int coef;

int expon;

struct ListNode *link;

} ListNode;

ListNode *A, *B;

금오공과대학교 컴퓨터공학과 10

A 3 12 2 8 1 0 NULL

(coef) 계수 지수

(expon) link

(11)

다항식 덧셈

금오공과대학교 컴퓨터공학과 11

A

B

C

3 12 2 8

8 12 -3 10

11 12

p

q

1 0

10 6

NULL

NULL

-3 10 r

A

B

3 12 2 8

8 12 -3 10

C 11 12

p

q

r

1 0

10 6

NULL

NULL

(12)

다항식 덧셈

금오공과대학교 컴퓨터공학과 12

A

B

3 12 2 8

8 12 -3 10

C 11 12

p

q 1 0

10 6

NULL

NULL

-3 10 2 8

r

A

B

3 12 2 8

8 12 -3 10

C 11 12

p

q 1 0

10 6

NULL

NULL

-3 10 2 8 10 6

r

1 0 NULL

참조

관련 문서

윈도우즈 API 응용 프로그램: C 언어로 작성, 60줄 이상의 Hello 응용(복잡) 응용 프레임워크(MFC, pclaf). MFC 응용 프로그램: C++ 언어로 작성, MFC 구조 복잡, 10줄

첫째, 2000m이상의 고도 트레이닝을 하여 신체를 고지의 저산소환경에 순 화시켜, 그 곳에서 획득되어진 호흡, 순환기능을 위주로 한 전신적인 지구 력을 획득한 후 평지에서의

딸이 공항에서 만났던 인신매매 범을 만나게 되지만 추격 중에 인신매매 범은 사망한다.. 사건의 실마리를 찾기

ActionScript 3.0 이벤트 처리 : MovieClip 속성 제어.. 김성영교수

This definition of Wallerstein follows Dependency Theory, which intended to combine the developments of the different societies since the 16th century in different regions

• 포트폴리오 밸런스 접귺방식 - 국내채권과 해외채권을 불완젂대 체재로 가정한다.. - 수급요읶이 변동하면 재화시장은 가격의 변동에 의해 즉각적으로 균형이

송풍기의 용량 증가를 가져와 에너지 낭비가 발생 덕트의 마모가 심해짐... 원형 직선

제작과 응용방향을 찾는데 목적으로