โครงสร้างข้อมูลแบบคิว

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Bansomdej Chaopraya Rajabhat University
Advertisements

โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
บทที่ 5 โครงสร้างข้อมูลคิว
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์
Functional programming part II
Stack.
Stack Holidays/seasonal content.
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
AVL Tree.
Data structure & Algorithms
ลักษณะการทำงานของ Stack
การประยุกต์สมการเชิงเส้นตัวแปรเดียว
Week 6 ประกาศค่าตัวแปร.
บรรยายครั้งที่ 3: Queue
ตัวแปรชุด.
Arrays.
Arrays.
Use Case Diagram.
คิวQueue Circular Queue.
C Programming Lecture no. 6: Function.
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
Introduction to Digital System
ระบบจำนวนเต็ม โดย นางสาวบุณฑริกา สูนานนท์
ข้อมูลพื้นฐานและตัวดำเนินการ
การเขียนรายงานการใช้เอกสารประกอบการสอน
อาร์เรย์และข้อความสตริง
บทที่ 2 อาร์เรย์ อาร์เรย์ คือ ชุดของตัวแปรเดียวกัน ซึ่งสมาชิกของอาร์เรย์จะเป็นตัวแปรพื้นฐาน จำนวนสมาชิกในอาร์เรย์มีขนานแน่นอน และสมาชิกของอาร์เรย์แต้ละตัว.
ตัวแปรกับชนิดของข้อมูล
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
สัปดาห์ที่ 7 การแปลงลาปลาซ The Laplace Transform.
บทที่ 3 การวิเคราะห์ Analysis.
Linked List (ลิงค์ลิสต์)
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
ลิงค์ลิสต์ (Linked List)
ฟังก์ชัน.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
CHAPTER 4 Control Statements
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
โครงสร้างข้อมูลแบบรายการโยง (Link List)
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
โครงสร้างข้อมูล Queues
โครงสร้างข้อมูลแบบลิงก์ลิสต์
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หลักการเขียนโปรแกรม ( )
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบ สแตก (stack)
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่า ว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ ว่าง (0) body.
Week 13 Basic Algorithm 2 (Searching)
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
QueueQueue Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Queue Lecturer : Kritawan Siriboon, Room no. 913
ใบสำเนางานนำเสนอ:

โครงสร้างข้อมูลแบบคิว QUEUE

เนื้อหา คิว โอเปอร์เรชั่นของคิว คิวแบบวงกลม การประยุกต์ใช้งานคิว การเพิ่มข้อมูลเข้าไปในคิว (En Queue) การลบข้อมูลออกจากคิว (De Queue) คิวแบบวงกลม การประยุกต์ใช้งานคิว Queue Slide# 2

คิว : Queue คิวเป็นลิสต์แบบเชิงเส้นเช่นเดียวกับสแตค แต่มีความแตกต่างกันตรงที่คิวมีตัวชี้ 2 ตัว คือ front และ rear สำหรับการใส่ข้อมูลเข้าและนำข้อมูลออก คิวมีกระบวนการทำงานแบบ First In First Out : FIFO Queue Slide# 3

ตัวอย่างของคิว front rear front +1 rear A B C … n ลบข้อมูล A B C … n Queue Slide# 4

Chapter 4 Stack and Queue โครงสร้างข้อมูลแบบเชิงเส้นเช่นเดียวกับสแตก และคิว มีตัวชี้ 2 ตัว - หัว (Head) - หาง (Tail) ข้อมูลจะเข้าทางหางและออกทางหัวที่เรียกว่า FIFO ก ข ค H T

Chapter 4 Stack and Queue ข ค H+1 T ข ค ง H+1 T+1 A H T H and T = NULL

Chapter 4 Stack and Queue Queue ( circular queue) H=1 H=2 H=3 ก ข ข ค ง ค ง T=2 T=4 T=4 1 2 3 4 1 2 3 4 1 2 3 4 H=3 H=4 H=1 จ ค ง จ ง จ ฉ T=1 T=1 T=2 1 2 3 4 1 2 3 4 1 2 3 4 Circular queue มีหลักอยู่ว่าต้องทราบจำนวนสูงสุดของ หน่วยความจำที่ใช้เก็บข้อมูล

สถานะของคิว A a) empty queue b) enqueue A A B B c) enqueue B 0 1 2 0 1 2 front = 0 rear = 0 front = -1 rear = -1 A a) empty queue b) enqueue A 0 1 2 0 1 2 front = 0 rear = 1 front = 1 rear = 1 A B B c) enqueue B d) dequeue A 0 1 2 0 1 2 front = 1 rear = 2 B C front = 2 rear = 2 C e) enqueue C full queue f) dequeue B Queue Slide# 8

Chapter 4 Stack and Queue อัลกอริธึม INSQ (Q,N,H,T,DATA) : Q = คิวของข้อมูล ถ้า H = 1 และ T = N หรือถ้า H = T+1 แสดงว่าคิวเต็มและจบการทำงาน 1.1 ถ้า H = NULL ดังนั้นให้ H = 1 and T = 1 1.2 ถ้า T = N ให้ T = 1 และ 1.3 ถ้า T = ตำแหน่งใดๆให้ T = T+1 2. ให้ Q [T] = DATA จบการดำเนินการ

Chapter 4 Stack and Queue อัลกอริธึม DELQ (Q,N,H,T,DATA) ถ้า H = NULL ดังนั้นคิว Underflow และจบการทำงาน ให้ DATA = Q [H] 2.1 ถ้า H = T ให้ H = T= NULL 2.2 ถ้า H = N ให้ H = 1 2.3 ถ้า H = ตำแหน่งใดๆในคิว ให้ H = H+1 จบการดำเนินการ

การเพิ่มข้อมูลเข้าไปในคิว : En Queue การนำข้อมูลเข้าที่ rear ซึ่งจะชี้สมาชิกตัวสุดท้าย และต้องเพิ่มค่า rear ทีละ 1 ก่อนจะนำสมาชิกใหม่เข้ามา และทำลักษณะเช่นนี้จนกว่าคิวจะเต็ม ที่ rear=n-1 เป็นค่าสูงสุด Queue Slide# 11

De Queue ในการจัดรูปแบบของคิวอีกรูปแบบเรียกว่า ดีคิว หรือ เดค ซึ่งแบ่งออกเป็น 2 ชนิด ดีคิวที่จำกัดการนำเข้าของข้อมูล(In-put restricted de queue) ดีคิวที่ใส่ข้อมูลได้เพียงด้านเดียว แต่ลบข้อมูลออกได้ทั้ง สองด้าน ดีคิวที่จำกัดการส่งออกของข้อมูล(Out-put restricted de queue) ดีคิวที่ใส่ข้อมูลได้ทั้งสองด้าน แต่ลบข้อมูลออกได้เพียง ด้านเดียว

En Queue ในการจัดลำดับและการลบออกของคิวที่มีขบวนการดัง ต่อไปนี้ ข้อมูลที่มีลำดับความสำคัญสูงสุดจะถูกเรียกทำงานก่อน ในกรณีที่มีลำดับความสำคัญเท่ากันเลือกอันที่มาก่อน ในการสร้างคิวแบ่งได้เป็น 2 ลักษณะ คิวแบบแถวเดียว (One Way List) ประกอบด้วย 3 ส่วน (ข้อมูล, ลำดับความสำคัญ และตัวชี้ถัดไป) H T 1 ก 1 ก 1 ก 1 ก

Chapter 4 Stack and Queue ในการสร้างคิวแบ่งได้เป็น 2 ลักษณะ คิวแบบหลายคิวตามจำนวนลำดับความสำคัญและกำหนด เป็นลักษณะหลายแถวเรียกว่า circular Queue มีลักษณะ 2 มิติ ไม่เป็นข้อมูลแบบเชิงเส้น ตำแหน่ง 1 2 3 4 1 ก 2 ข ค ง 3 จ 4 ฉ ลำดับความสำคัญ

Enqueue addq ( int item ) { if ( rear == MAX - 1 ) {  printf ( "\nQueue is full" ) ;  return ;  }    rear++ ;  arr[rear] = item ;    if ( front == -1 )  front = 0 ;  } กรณี e) และ f) คิวเต็ม Queue Slide# 15

การลบข้อมูลจากคิว : De Queue การนำข้อมูลออกจากคิว จะออกที่ front ซึ่งจะชี้ที่สมาชิกตัวแรกเสมอ ค่า front จะเพิ่มขึ้นทีละ 1 ทุกครั้งหลังจากนำ ข้อมูลออกจากคิวแล้ว ทำจนกระทั่ง front = rear โดยกำหนดให้ค่าของ front=-1 และ rear=-1 ซึ่งแสดงว่าคิวว่าง Queue Slide# 16

กรณีลบคิวที่เหลือเพียงตัวเดียว Dequeue delq( )  { int data ;    if ( front == -1 )  {  printf ( "\nQueue is Empty" ) ;  return NULL ;  }    data = arr[front] ;  if ( front == rear )  front = rear = -1 ;  else  front++ ;    return data ;  } กรณีลบคิวที่เหลือเพียงตัวเดียว Queue Slide# 17

คิววงกลม : Circular Queue คือคิวที่เปรียบเสมือนกับ ลิเนียร์อาเรย์ทั่ว ๆ ไป แตกต่างเพียงแต่ว่า คิววงกลมสามารถกลับไปใช้คิวหน้าได้ในกรณีที่หมดคิวปกติแล้ว Queue Slide# 18

คิวแบบวงกลม C f) full queue D C g) enqueue D 0 1 2 front = 2 rear = 2 C f) full queue 0 1 2 front = 1 rear = 0 D C กรณีคิวเต็ม กำหนดให้ rear ไปชี้ที่จุดเริ่มต้นใหม่ (0) เพื่อสามารถเพิ่ม D เข้าไปได้ g) enqueue D Queue Slide# 19

Enqueue of Circular Queue addq ( int item )  {  if ( ( rear == MAX - 1 && front == 0 ) || ( rear + 1 == front ) )  {  printf ( "\nQueue is full" ) ;  return ;  }    if ( rear == MAX - 1 )  rear = 0 ;  else  rear++ ;    arr[rear] = item ;    if ( front == -1 )  front = 0 ;  แสดงข้อความว่า “คิวเต็ม” เช่น กรณี h) กรณี g) คิวเต็ม เมื่อต้องการเพิ่มข้อมูลเข้าไปอีก ให้กำหนด rear ไปชี้ที่จุดเริ่มต้นใหม่ Queue Slide# 20

เพิ่มข้อมูลในคิวแบบวงกลม 0 1 2 0 1 2 front = 1 rear = 0 front = 2 rear = 1 D C D E C g) enqueue D h) enqueue E Queue Slide# 21

Dequeue of Circular Queue delq( )  {  int data ;    if ( front == -1 )  {  printf ( "\nQueue is Empty" ) ;  return NULL ;  }  else  {  data = arr[front] ;    if ( front == rear )  front = rear = -1 ;  {  if ( front == MAX - 1 )  front = 0 ;  front++ ;    return data ;  } กรณี k) ลบคิวที่เหลือเพียงตัวเดียว กรณี i) ลบคิวที่ช่องความจำสุดท้าย กำหนดให้ front วนไปชี้ที่จุดเริ่มต้นใหม่ Queue Slide# 22

ลบข้อมูลในคิวแบบวงกลม 0 1 2 0 1 2 front = 2 rear = 1 front = 0 rear = 1 D E C D E h) enqueue E i) dequeue C 0 1 2 0 1 2 front = 1 rear = 1 front = -1 rear = -1 E j) dequeue D k) dequeue E Queue Slide# 23

Chapter 4 Stack and Queue สรุป ในบทแสดงโครงสร้างข้อมูล 2 ชนิด สแตก และ คิว ความแตกต่างของโครงสร้างใน การจัดเก็บ และขบวนการลบ การแทรกข้อมูล การประยุกต์ใช้ในเรื่องการจัดลำดับการทำงานสมการ ทางคณิตศาสตร์ ในเรื่องการแก้สมการ อินฟิก ด้วย พรีฟิก และโพสฟิก

Home work 1. จงอธิบายถึงสิ่งที่เหมือนกันและสิ่งที่แตกต่างกันระหว่างสแตกกับคิว 2. “ท็อปของสแตก” คืออะไร จงอธิบาย 3. จงอธิบายถึงสิ่งที่เหมือนกันและสิ่งที่แตกต่างกันระหว่างคิวเส้นตรงกับคิววงกลม 4. จงเปรียบเทียบข้อดี ข้อเสียของโครงสร้างข้อมูลสแตก คิววงกลม และคิวเส้นตรง 5. คิวขนาด 7 ค่า มีรายการต่อไปนี้ Front = 2, Rear = 6, Queue [ ] = {null, null, “ขนุน”, “ส้มโอ”, “แตงโม”, “ฝรั่ง”, null } จงอธิบายผลของคิวแบบวงกลม โดยมีค่าเริ่มต้นตำแหน่งที่ 0 รวมทั้ง Front และ Rear เมื่อมีการกระทำต่อไปนี้

Home work ก. เพิ่มมะม่วง ข. ลบ 2 รายการออกจากคิว ก. เพิ่มมะม่วง ข. ลบ 2 รายการออกจากคิว ค. เพิ่ม “ทุเรียน” ลงในคิว ง. เพิ่ม “องุ่น” ลงในคิว จ. ลบ 2 รายการออกจากคิว ฉ. เพิ่ม “ละมุด” ลงในคิว

Home work 6. จงเขียนแผนภาพและค่าของตัวแปรของคิวที่มีสมาชิกเป็นเลขจำนวนเต็มและสร้างด้วยลิงค์ลิสต์ เมื่อมีการดำเนินการดังนี้ ก. สร้างคิวว่าง ข. เพิ่ม 5 และ 8 ลงในคิว ค. นำข้อมูลออกจากคิว 1 ค่า ง. เพิ่มข้อมูลในคิวอีก 5 ค่า จ. นับจำนวนสมาชิกในคิว