Title: Dense List
19. ????????????????????????
- Dense List
- Linked List
- Applications
2?????????????????
- ??????????
- ??????????????????????? (Data Structure)
?????????? - ???????????????????? (Algorithm)
?????????????????? - Program Data Structure Algorithm
3Data Structure
- Linear
- Array
- Link List
- Stack
- Queue
4List
- ??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????
5List
- ?????????????????????????? 2 ????
- Array
- Link List
2
count
1
3
4
25 31 42 58
4
25
31
42
58
6????????????????? Array
Ex. newdata d
void insert (datatype newdata) position
search(newdata) ptr cur while (ptr gt
position) listptr1 listptr
ptr-- listposition newdata cur
a
b
position
d
e
e
g
t
cur
g
t
cur
7????????????????? Array
Ex. olddata e
void delete(datatype olddata) position
search(olddata) ptr position while
(ptr lt cur) listptr listptr1
ptr cur --
a
b
position
g
e
g
cur
t
t
cur
8????????????????? Array
- ????????? Array ??????????????????????????????????
???????????????????? ???? ????????????????????????
???? 10,000 ??? ??????????????????? 2 byte
?????????????????????????????? 20,000 byte
??????????????????????????????????????????????????
???????????????????? 20,000 byte
????????????????????????????? - ????????????????????????????????????? 10,000 ???
?????????????????????????????????????????
?????????????????? ??????????????? 2,000 ???
?????????????????????????????????
?????????????????????????????
9????????????????? Array (???)
- ?????????????????????????????????? 10,000 ???
?????????????????????????????????????????? 10,000
??? ????????????????????????????????????
????????????????????? ???????????????
Address
100 data1
102 data2
104 data3
106 data4
10????????? Linked list
- ???????????????????????????????????????
????????????????????????????????
?????????????????? ???????????????????????? - ???????????????????????????????????????????????
Address
100 data5
102
104 data1
106
11Linked List
- ??????????????????????????????????????????????????
????????????????????????????? 2 ???????
????????????????? (Data) ??? ?????????????????
(Pointer)
1 ????
12Linked List
- ????????????????? (Data) ???????????????????? 1
?????? ?????????????? - ????????????????? (pointer) ?????????????????
(Address) ???????????????????????? - ???????????????????
- Singly Linked List
- Doubly Linked List
13Linked List
- Singly Linked List ???????????????????????????????
?????????????????? ???????????????????? - ???????????????????????? ?????????????????????????
????? NULL ????????????????
data pointer
data pointer
data pointer
14Linked List
- Doubly Linked List ????????????????? Data ???
?????????????????? 2 ?????? ??? ?????????????????
??????????????????????? ??????????????????????????
??????????? 2 ???? ??? ?????????????????
????????????????????
15Linked List
- Operation ??? Linked list
- ??????????? (Insert) ?? list ?? 2 ???
- ??????????????? list (Append)
- ??????????????????? node
- ?? (Delete) ???????????? list
16Singly Linked List
- ??????????????
- head ???? address ????????????? list
- last ???? address ????????????????? list
- newnode ???? address ??????????????????????
- data ??????????
- next ???? address ????????????
- ?????????? list ?????? ????
- newnode -gt data ???????????????????????????
newnode - newnode -gt next ?????????????? address
????????????? newnode
17Singly Linked List
struct node int data
struct node next
newnode
18Singly Linked List
- ????????????????????? list (Append)
- ????????
- 1. ???????????? Insert 25
1.1 create newnode 1.2 newnode -gt data
25 1.3 newnode -gt next NULL 1.4 head
newnode last (?)
25
19Singly Linked List
- ????????????????????? list (Append)
- ????????
- 2. ???????????? 2 Insert 30
2.1 create newnode 2.2 newnode -gt data
30 2.3 newnode -gt next NULL 2.4 last- gt
next newnode 2.5 last newnode (?)
30
20Singly Linked List
- ????????????????????? list (Append)
- ????????
- 2. ???????????? 2 Insert 30
2.1 create newnode 2.2 newnode -gt data
30 2.3 newnode -gt next NULL 2.4 last- gt
next newnode 2.5 last newnode
21Singly Linked List
- ????????????????????? list (Append)
- ????????
- 3. ???????????? 3 Insert 42
3.1 create newnode 3.2 newnode -gt data
42 3.3 newnode -gt next NULL 3.4 last- gt
next newnode 3.5 last newnode ( ?)
30
42
22Singly Linked List
- ????????????????????? list (Append)
- ????????
- 3. ???????????? 3 Insert 12
2.1 create newnode 2.2 newnode -gt data
12 2.3 newnode -gt next NULL 2.4 last- gt
next newnode 2.5 last newnode ( ?)
30
12
23Singly Linked List
- ???????????????????????????????? (Insert)
- ????????
- 4. Insert 38 ?????????????? 2 ?????????? 3
4.1 create newnode 4.2 newnode -gt data 38
38
24Singly Linked List
- ???????????????????????????????? (Insert)
- ????????
- 4. Insert 38 ?????????????? 2 ?????????? 3 (???)
4.3 ??? ptr ???? address ?????????? 2 4.4
newnode -gt next ptr -gt next 4.5 ptr -gt next
newnode
38
25Singly Linked List
- ????????????? list (Delete)
- ???????? Delete 25 ?????? list
- ??????? head -gt data 25 ??????? ?
- 2. ?????? ??? head head -gt next ( ?)
26Singly Linked List
- ????????????? list (Delete)
- ???????? Delete 38 ?????? list
- ??? ptr head
- ptr -gt next -gt data 38?
- ?????? ??? ptr -gt next ptr -gt next -gt next
- ????????? ??? ptr ptr -gt next ????????????? 2.
????
27Doubly Linked List
- ??????????????
- head ???? address ????????????? list
- last ???? address ????????????????? list
- newnode ???? address ??????????????????????
- data ??????????
- previous ???? address ???????????????
- next ???? address ????????????
28Doubly Linked List
- ?????????? list ?????? ????
- newnode -gt data ???????????????????????????
newnode - newnode -gt previous ?????????????? address
??????????????? newnode - newnode -gt next ?????????????? address
????????????? newnode
29Doubly Linked List
struct node int data
struct node next, previous
newnode
30Doubly Linked List
- ????????????????????? list (Append)
- ????????
- 1. ???????????? Insert 25
1.1 create newnode 1.2 newnode -gt data
25 1.3 newnode -gt previous NULL 1.4 newnode
-gt next NULL 1.5 head newnode last ( 100)
31Doubly Linked List
- ????????????????????? list (Append)
- ????????
- 2. ???????????? 2 Insert 30
2.1 create newnode 2.2 newnode -gt data
30 2.3 newnode -gt next NULL 2.4 newnode -gt
previous last 2.5 last- gt next
newnode 2.6 last newnode (200)
32Doubly Linked List
- ????????????????????? list (Append)
- ????????
- 3. ???????????? 3 Insert 42
25
3.1 create newnode 3.2 newnode -gt data
42 3.3 newnode -gt next NULL 3.4 newnode -gt
previous last 3.5 last- gt next
newnode 3.6 last newnode (300)
30
42
33Doubly Linked List
- ???????????????????????????????? (Insert)
- ????????
- 4. Insert 38 ?????????????? 2 ?????????? 3
4.1 create newnode 4.2 newnode -gt data 38
38
34Doubly Linked List
- ???????????????????????????????? (Insert)
- ???????? 4. Insert 38 ?????????????? 2
?????????? 3 (???)
4.3 ??? ptr ???? address ?????????? 2 4.4
newnode -gt next ptr-gt next 4.5 newnode -gt
previous ptr-gt next -gt previous 4.6 ptr -gt
next newnode
38
42
35Doubly Linked List
- ????????????? list (Delete)
- ???????? Delete 25 ?????? list
- ??????? head -gt data 25 ??????? ?
- 2. ?????? ??? head head -gt next ( ?)
42
38
36Singly Linked List
- ????????????? list (Delete)
- ???????? Delete 38 ?????? list
- ??? ptr head
- ptr -gt next -gt data 38?
- ?????? ??? ptr -gt next ptr -gt next -gt next
- ????????? ??? ptr ptr -gt pointer ?????????????
2. ????
42
38
37Array vs Linked List
- Array
- ???????????
- ??????????????????
- Linked List
- ??????????????
- ???????????????
38Motto Today ??????????????????????????
?????????????????????? ?????????????????????????
Practice makes Perfect !