cosc2202 data structure n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
???? COSC2202 ??????????????? (Data Structure) PowerPoint Presentation
Download Presentation
???? COSC2202 ??????????????? (Data Structure)

Loading in 2 Seconds...

play fullscreen
1 / 18

???? COSC2202 ??????????????? (Data Structure) - PowerPoint PPT Presentation


  • 79 Views
  • Uploaded on

วิชา COSC2202 โครงสร้างข้อมูล (Data Structure). โครงสร้างข้อมูลแบบลิงค์ลิสต์ ( Linked List). โครงสร้างข้อมูลแบบลิงค์ลิสต์ ( Linked List).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '???? COSC2202 ??????????????? (Data Structure)' - kimama


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
cosc2202 data structure
วิชา COSC2202โครงสร้างข้อมูล (Data Structure)

โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)

linked list
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
  • ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกันไปตามลำดับ ซึ่งอาจอยู่ในลักษณะแบบเชิงเส้นตรง (linear) หรือ ไม่เป็นเส้นตรง (nonlinear) ก็ได้ ซึ่งในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด (node) ในหนึ่งโหนดจะประกอบด้วยส่วนของข้อมูลที่ต้องการจัดเก็บ เรียกว่าส่วน Info และส่วนที่เป็นพอยน์เตอร์ที่ชี้ไปยังโหนดถัดไป (Link) หรือชี้ไปยังโหนดอื่นๆที่อยู่ในลิสต์ หากไม่มีโหนดที่อยู่ถัดไป ส่วนที่เป็นพอยน์เตอร์หรือ Link จะเก็บค่า NULL หรือ NILL ใช้สัญลักษณ์ ^
linked list1
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
  • Linked list คล้ายๆ กับขบวนรถไฟ ตรงที่ว่าการที่จะเกิดเป็นขบวนรถไฟได้จะต้องมีการนำโบกี้รถไฟหลายๆ โบกี้มาต่อกัน ขบวนจะสั้นหรือยาวก็ขึ้นอยู่กับโบกี้เหล่านี้ หากผู้โดยสารโบกี้แรกๆ ต้องการที่จะไปยังโบกี้สุดท้ายก็ต้องเดินผ่านโบกี้อื่นๆ ระหว่างทางด้วย
linked list2
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
  • โหนด (Node)
  • โครงสร้างแบบ Linked list แบ่งได้หลายแบบตามวิธีการชี้ไปยังโหนดต่างๆ เช่น Singly Linked list , Doubly Linked list , Multi-Linked list
  • Singly Linked listSingly Linked list จะประกอบด้วยโหนดที่มีพอยน์เตอร์ชี้ไปในทิศทางเดียว คือชี้ไปยังโหนดถัดไป
linked list3
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
  • Doubly Linked list

Doubly linked list ประกอบด้วยส่วนของ Info และ พอยน์เตอร์ที่ชี้ไป 2 ทิศทาง คือ ชี้ไปยังโหนดถัดไป และชี้ไปยังโหนดก่อนหน้า ดังนั้นเราจึงสามารถทำการอ่านข้อมูลได้ 2 วิธี คือ การอ่านไปข้างหน้า และอ่านไปทางข้างหลัง

slide6
การทำงานของลิสต์
  • การสร้างลิสต์ว่าง
  • การทดสอบว่าลิสต์ว่างหรือไม่
  • การเพิ่มสมาชิกใหม่ลงในลิสต์
  • การลบสมาชิกออกจากลิสต์
  • การท่องไปในลิสต์หรือส่วนของลิสต์ โดยการเข้าถึงสมาชิก และประมวลผลสมาชิกแบบลำดับ
slide7
การสร้างรายการว่าง

typedef struct listnode{// create list node type

int value;

struct listnode *next;

} LISTNODE;

LISTNODE *numlist=NULL;

numlist =(LISTNODE *)malloc(sizeof(LISTNODE));

numlist

slide8
ทดสอบว่ารายการว่างหรือไม่ทดสอบว่ารายการว่างหรือไม่

// return 1 if list is empty, else return 0.

int islempty(LISTNODE *head)

{

return (head == NULL);

}

numlist

=

NULL

slide9
การเพิ่มสมาชิกใหม่ลงในรายการการเพิ่มสมาชิกใหม่ลงในรายการ
  • Insert first element
  • Insert element on head of list
  • Insert element between list
  • Insert element on end of list
insert first element
Insert first element

numlist = getnode(); // head of list

numlist->value = 23;

numlist->next = NULL;

23

NULL

numlist

insert element on head of list
Insert element on head of list

NEW = getnode(); // head of list

NEW->value = 20;

NEW->next = numlist;

numlist = NEW;

NEW

20

numlist

23

NULL

insert element between list
Insert element between list

NEW = getnode();

NEW->value = 24;

NEW->next = numlist->next ;

numlist->next = NEW;

numlist

23

25

NEW

24

NULL

insert element on end of list
Insert element on end of list

NEW = getnode();

NEW->value = 25;

NEW->next = NULL;

numlist->next = NEW;

numlist

23

NULL

25

NULL

NEW

slide14
การลบสมาชิกออกจากรายการการลบสมาชิกออกจากรายการ
  • delete element on head of list
  • delete element between list
  • delete element on end of list
delete element on head of list
delete element on head of list

if( numlist->value == 23 ){ // test value of head node

backup = numlist; // backup head node

numlist = numlist->next; // move head to next node

free(backup); // free backup node

}

23

24

25

backup

NULL

delete element between list
delete element between list

ptr = ptr->next; // move ptr to next node

if( (ptr->next)->value == 24 ){ // test value of next node

backup = ptr->next; // backup next node

ptr->next = (ptr->next)->next; // point next node to skip 1 node

free(backup); // free backup node

}

24

23

25

backup

NULL

delete element on end of list
delete element on end of list

while(ptr->next!=NULL){

ptr = ptr->next; // move ptr to next node

if( (ptr->next)->value == 25 ){ // test value of next node

backup = ptr->next; // backup next node

ptr->next = (ptr->next)->next; // point next node to skip 1 node

free(backup); // free backup node

break;

}

}

ptr

backup

24

23

25

NULL

slide18
การเข้าถึงสมาชิกของรายการการเข้าถึงสมาชิกของรายการ

void printlst(LISTNODE *numlist)

{

LISTNODE *ptr=numlist;

while(ptr!=NULL){

printf("%3d",ptr->value);

ptr = ptr->next; // next node

}

}

ptr

24

numlist

23

25

NULL