Linked List (ลิงค์ลิสต์)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ระบบสมการเชิงเส้น F M B N เสถียร วิเชียรสาร.
Advertisements

Introduction to C Introduction to C.
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
VBScript.
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
ระบบมัลติโปรแกรมมิ่ง (Multiprogramming System)
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
Control structure part II
Functional programming part II
Stack.
ชนิดของข้อมูลและตัวดำเนินการ
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
การเลือกซื้อสเปคคอม จัดทำโดย นาย ธนวัฒน์ แซ่ลิ้ม ม.4/2 เลขที่ 25
Data structure & Algorithms
ARRAY.
การจัดการอุปกรณ์รับ และแสดงผล
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
PHP LANGUAGE.
ภาษาคอมพิวเตอร์.
บทที่ 1. พื้นฐานความรู้ทั่วไป
Atlas.ti Date 24/03/10.
ขั้นตอนการแปลงไฟล์.
คิวQueue Circular Queue.
วิธีการทำงานของผังงาน
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
ข้อมูลพื้นฐานและตัวดำเนินการ
CPU ไม่รวม I/O PROCESSOR , MATH CO-PROCESSOR
ตัวดำเนินการ(Operator)
โครงสร้างข้อมูลแบบคิว
Memory Management ในยุคก่อน
วิธีการทางคอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
List ADTs By Pantharee S..
โครงสร้างข้อมูลคืออะไร ?
ตัวแปรกับชนิดของข้อมูล
ประวัติและขั้นตอนการพัฒนาโปรแกรมภาษาซี
Week 10 การเขียนโปรแกรมเบื้องต้น #2
บทที่ 5 Link List Link List.
Linked List List is group of nodes that consists of data and link.
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
ตัวดำเนินการ และนิพจน์คณิตศาสตร์
PHP การตรวจสอบเงื่อนไข.
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
หลักการแก้ปัญหา
โครงสร้างข้อมูลแบบรายการโยง (Link List)
ในแต่ละเดือนเมื่อตรวจสอบข้อมูลจนมีผลงานผ่านร้อยละ 100 หรือสูงกว่า 95 ขอให้จัดเก็บแฟ้ม chronic และ person ลงฐานข้อมูลด้วย เพื่อใช้ในการตรวจสอบความ ซ้ำซ้อนของข้อมูลที่ส่งในเดือนถัดไป.
กระบวนการทำงานและบุคลากร
โครงสร้างข้อมูลแบบลิงก์ลิสต์
หลักการเขียนโปรแกรม ( )
Input / Output ธนวัฒน์ แซ่เอียบ.
หน้าจอการสืบค้น (OPAC)
รูปร่างเครือข่ายคอมพิวเตอร์
รูปร่างของเครือข่ายคอมพิวเตอร์
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่า ว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ ว่าง (0) body.
สื่อการสอนการเขียนเว็บเพจ ด้วยภาษา HTML
รูปร่างเครือข่ายคอมพิวเตอร์ จัดทำโดย
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
แบบ Star จะเป็นลักษณะของการต่อ เครือข่ายที่ Work station แต่ละตัวต่อรวมเข้าสู่ ศูนย์กลางสวิตซ์ เพื่อสลับตำแหน่งของเส้นทาง ของข้อมูลใด ๆ ในระบบ ดังนั้นใน.
แบบดาว เป็นลักษณะของการต่อเครือข่ายที่ Work station แต่ละตัวต่อรวมเข้าสู่ ศูนย์กลางสวิตซ์ เพื่อสลับตำแหน่งของเส้นทางของข้อมูลใด ๆ ในระบบ ดังนั้น ใน โทโปโลยี
4 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (LINKED LIST).
ใบสำเนางานนำเสนอ:

Linked List (ลิงค์ลิสต์)

Linked List เนื่องจากการจัดเก็บข้อมูลแบบ Array จะต้องจองเนื้อที่ทั้งหมดที่จะใช้ไว้ก่อน เช่น ต้องการจัดเก็บข้อมูลจำนวน 1,000 ค่า แต่ละค่าใช้เนื้อที่ 2 byte เนื้อที่ทั้งหมดจะเป็น 2,000 byte

Linked List ดังนั้นในการใช้งานตัวแปรแบบ array จะต้องหาเนื้อที่ที่อยู่ติดกัน 2,000 byte และเนื้อที่ว่างที่ได้ จะไม่สามารถนำไปใช้กับการจัดเก็บข้อมูลอื่น ๆ ได้ ถ้าไม่สามารถหาเนื้อที่ว่างติดกัน 2,000 byte ได้ ก็จะไม่สามารถใช้งานได้ เช่น ไม่สามารถสั่งให้โปรแกรมทำงาน (execute) ได้ ถึงแม้ว่าจะ compile ผ่านแล้วก็ตาม เพราะเมื่อมีการสั่งให้โปรแกรมทำงาน ตัวแปรทุกตัวที่ใช้จะต้องมีการจับจองเนื้อที่ใน หน่วยความจำ เมื่อไม่สามารถจับจองเนื้อที่ได้ compiler ของภาษาที่ใช้เขียนโปรแกรมอาจจะแจ้งข้อผิด พลาด (error)ว่า Out of memory หรือ Not enough memory หรือ Insufficience memory ฯลฯ

Linked List ปัญหาของตัวแปร Array 1. ต้องได้เนื้อที่ว่างที่อยู่ติดกันตามจำนวนเนื้อที่ทั้งหมด ถ้ามีเนื้อที่ว่างดังนี้ จุดที่ 1 ว่าง 1,900 byte จุดที่ 2 ว่าง 800 byte จุดที่ 3 ว่าง 1,990 byte จุดที่ 4 ว่าง 10 byte จะเห็นว่าไม่มีจุดใดเลยที่มีเนื้อที่ว่างติดกัน 2,000 byte ดังนั้นโปรแกรมนี้ไม่สามารถทำงานได้ 2. กรณีที่จองเนื้อที่ไว้ 2,000 byte เก็บข้อมูล 1,000 ค่า แต่การใช้งานจริง ๆ เก็บข้อมูลเพียง 100 ค่า ใช้เนื้อที่ไปเพียง 200 byte ทำให้เหลือเนื้อที่ที่ไม่ได้ใช้ 1,800 byte ซึ่งเนื้อที่ 1,800 byte จะถูกกันไว้ สำหรับตัวแปรนั้น ๆ ดังนั้นเนื้อที่ที่เหลือจะไม่สามารถนำไปใช้งานอื่นได้ 3. กรณีที่จองเนื้อที่ไว้เก็บข้อมูล 1,000 ค่า แต่การใช้งานจริง ๆ ต้องการมากกว่า 1,000 ค่า เช่น ต้องการเพิ่ม อีก 2 ค่า ก็ไม่สามารถที่จะเพิ่มเติมข้อมูลได้ (จองไว้แค่ไหน ใช้แค่นั้น) จากปัญหาของ array ทั้ง 3 ข้อ สามารถแก้ปัญหาได้โดยใช้ linked lists

ลักษณะ Linked lists ลักษณะ Linked lists Linked lists จะไม่มีการจองเนื้อที่ หรือที่อยู่ (address)ใน memory ไว้ก่อน เมื่อต้องการใช้จึงจะทำการขอ เนื้อที่ ซึ่งก็จะทำการขอเนื้อที่สำหรับ 1 ค่า เมื่อต้องการใช้สำหรับข้อมูลต่อไป ก็จะทำการขอเนื้อที่อีก และเนื้อที่ที่ ขอใหม่ ไม่จำเป็นต้องเป็นเนื้อที่ที่อยู่ติดกัน แต่เป็นเนื้อที่บริเวณใดก็ได้ ที่หาและพบว่าว่าง ดังนั้น เมื่อเนื้อที่ไม่ได้อยู่ ติดกัน จะต้องมีตัวที่ทำหน้าที่จำว่าข้อมูลตัวต่อไปเก็บอยู่ที่ address ใด ซึ่งตัวที่ทำหน้าที่จำจะหมายถึงตัวที่ทำหน้าที่ เชื่อมระหว่างข้อมูลใด ๆ กับข้อมูลตัวต่อไป ซึ่งการเชื่อมนี้เรียกว่า link และเมื่อเชื่อมข้อมูลหลาย ๆ ค่าเข้าด้วยกัน 1 ชุด จะเรียกว่า list

ลักษณะ Linked lists ข้อมูล 1 ค่า จะเรียกว่า node ซึ่งแต่ละ node จะประกอบด้วย - ข้อมูลที่จัดเก็บ - address ของ node (ข้อมูล) ต่อไป

ลักษณะ Linked lists list ของข้อมูลตัวเลขจำนวน 5 ค่า ดังแสดงในภาพที่ 3

ลักษณะ Linked lists จากการจัดเก็บข้อมูลของ list ในภาพที่ 3 สามารถเขียนใหม่เพื่อให้เห็นอยู่ในลักษณะของ link ได้ชัดเจนเรียกว่า ภาพเสมือนดังแสดงในภาพที่ 4

Linked lists แก้ปัญหา Array แก้ปัญหาที่ 1 เนื่องจาก linked list จะขอเนื้อที่ครั้งละ 1 ค่า และเนื้อที่ที่ขอไม่จำเป็นต้องติดกัน ดังนั้น สามารถใช้เนื้อที่ ว่างตามจุดต่าง ๆ ได้ เช่น ต้องการเนื้อที่สำหรับข้อมูล 1,000 ค่า แต่ละ ค่าใช้ 2 byte ก็จะทำการขอเนื้อที่ทีละ 1 ค่า คือ 2 byte จำนวน 1,000 ครั้ง ซึ่งสามารถใช้เนื้อตามจุดที่ 1-4 ดังแสดงจุดที่ว่างในปัญหาของ array ข้อที่ 1ได้

Linked lists แก้ปัญหา Array แก้ปัญหาที่ 2 เนื่องจาก linked list จะขอเนื้อที่ครั้งละ 1 ค่า และขอเมื่อต้องการใช้ ดังนั้นจะไม่มีการสูญเสียเนื้อที่ใน memory ไปฟรี ๆ นั่นคือ ใช้เนื้อที่ตามจริง ต้องการแค่ไหนใช้เนื้อที่ไปแค่นั้น แก้ปัญหาข้อที่ 3 เนื่องจาก linked list จะขอเนื้อที่ไปได้เรื่อย ๆ ดังนั้นเมื่อมีข้อมูลเพิ่มก็สามารถขอเนื้อที่ได้อีกนั่นคือ ขอได้ไปเรื่อยๆ ไม่มีข้อจำกัด จนกว่า เนื้อที่ใน memory จะเต็ม (ไม่ว่าง )

ประเภทและOperation ของ Linked lists ประเภทของ linked lists linked lists แบ่งเป็น 2 ประเภท คือ 1. Singly linked lists ( list ที่มี linked เดียว ) 2. Doubly linked list ( list ที่มี 2 linked ) Operation ของ linked lists Operation ของ linked lists มี 2 อย่าง คือ 1. Insert (เพิ่มข้อมูลใน list) มี 2 ลักษณะ คือ - การเพิ่ม node ต่อท้าย list ( Append ) - การเพิ่มโดยการแทรกระหว่าง node ( Insert ) 2. Delete (ลบข้อมูลออกจาก list)