SlideShare a Scribd company logo
โครงสรางขอมูลคิว
ความหมายของโครงสรางขอมูลแบบคิว

• โครงสรางขอมูลแบบคิวเปนโครงสรางแบบรายการเชิงเสน
• มีีการเรีียงลํําดับมีลักษณะการดํําเนินการนําขอมูลเขาทีี่ปลายดาน
                    ั ี                ิ     ํ          
  ทายคิว เรียกวาสวนหลัง (Rear)
• มีดําเนินการขอมูลออกจากโครงสรางปลายอีกดานหนึ่ง เรียกวา
  สวนหนา (Front)
• ลักษณะเปนโครงสรางแบบ FIFO ( First-In-First-Out) หรือ FCFS
  (First-Come-First-Served)
การนาคิวไปใชงาน
                     ํ
• นําคิวมาใชแกไขปญหาตางๆ ในแอปพลเคชน เชน การ ขาแถว
  นาควมาใชแกไขปญหาตางๆ ในแอปพลิ คชัน ชน การเขาแถว
                                          ่
  เพื่อชําระเงิน
• การนาควไปใชในการสารวจพจารณา เชน การสงขอมูลขาวสารใน
     รนํ ิ ไปใ ใน รสํ ร พิ ร           น รสงขอม ข ส รใน
  เครือขาย การสงแฟมขอมูลไปยัง Printer หรือ รูปแบบสลับตู
  รถไฟบนราง
การปฏิบัติการของคิว
• 1. CreateQueue() ใชสรางคิวใหมขึ้นมาใชงานและกําหนดคาเริ่มตนตางๆ
• 2. Insert(value, queue) ใชเพิ่มคาใหมเก็บลงในคิวที่ใชงานอยู และขยับ
  ตําแหนงใหมใหกับสวนทาย
• 3. Remove (queue) ใชดึงคาออกจากคิวที่ใชงานอยูและสงคา value
  กลับมาให และขยับไปยังตําแหนงถัดไปใหเปนสวนหนา
• 4. isEmpty(stack) ใชตรวจสอบวาคิดที่ใชงานอยูวางหรือไม ถาไมมีคาเก็บไว
  เลยจะสงคาจริงกลับให
การทางานของคว
                               การทํางานของคิว
(a) เริมตนสรางคิว
    เรมตนสรางคว
       ่                Create Queue เปนคิววางไมมีสมาชิก
                                     เปนคววางไมมสมาชก


(b) นาคา A เขามาเก็บเปนตัวแรกโดยใช Insert (A) ไดคิว Q=[A] ตัวชี้ Front=A, Rear=A
     ํ

                                      A



 (c) นาคา B เก็บตอโดยใช Insert (B) ไดคว Q=[A,B] ตัวชี้ Front=A, Rear=B
      ํ                                   ิ

                                  A       B
การทางานของคว
                                การทํางานของคิว
(d)นาคา เขามาเกบตอ
(d)นําคา C เขามาเก็บตอ Insert (C) ไดคิว Q=[A,B,C] ตัวชี้ Front=A, Rear=C
                                     ไดคว             ตวช
                                     A       B       C


(e) ตองการดึงคาออกมาโดยใช Remove() ไดคิว Q=[B,C] ตัวชี้ Front=B, Rear=C

                                     B       C


(f) นําคา D E เก็บตอโดยใช Insert (D) และ Insert(E) ไดคิว Q=[B C D E] ตัวชี้ Front=B
    นาคา D,E เกบตอโดยใช                               ไดคว Q=[B,C,D,E] ตวช Front=B,
Rear=E
                           B     C       D       E
การทางานของคว
                             การทํางานของคิว
(e) ตองการดึงคาออกมา 3 คา โดยใช Remove() และเก็บคา F โดยใช Insert(F) ไดคิว
    ตองการดงคาออกมา คา โดยใช               และเกบคา     โดยใช            ไดคว
Q=[E,F] ตัวชี้ Front=E, Rear=F

                                 E      F
• ในการสรางคิวมาใชงาน พื้นฐานจะใชอารเรยเก็บคาสมาชิก มีตัว
  แปร Front และ Rear เปนตัวชี้ตําแหนงสวนหนาและสวนทาย
  ของคิว
• เกิดความลําบากเมื่อการเก็บคาเขามาถึงสมาชิกตัวสุดทายของอารเรย
  ทาใหเพมคาใหมไมได
  ทําใหเพิ่มคาใหมไมได
• ถาหากเพิ่มจะเกิดการลนของขอมูล (Queue Overflow)
70 80   50             (a)
                       ( )



        50             (b)




        50   90   60   (c)



50 90   60             (d)
คิววงกลม
    • ลักษณะเชิงเสนรูปวงแหวน เพื่อแกไขปญหาคิวแบบเชิงเสนแบบแนวตรง
          4                         4                      4
                      3
                                               3         60
0                                                                      3
                                                   0             90
    70                    0
                50                       50                     50
          80          2                       2                        2

          1                        1
                                                           1
• สิ่งทิ่พิจารณาเมื่อคิววางเปลาทราบไดจาก Front กับ Rear มีคาเทากัน
• เมื่อคิวเต็ม จะวนกลับมาจนมีคาเทากับ Front
• ทําใหเกิดความสับสนวา Front กับ Rear มีคาเทากันจะเปนสถานะของคิว
  วางหรือคิวเต็ม                            maxSize-1
                                                 S
                                       0

                                1



                        front
                                                          rear


สมาชกทอยู อนหนาสมาชกในตาแหนง
สมาชิกที่อยกอนหนาสมาชิกในตําแหนง Front เปนตําแหนงชองวางเสมอ ทําใหทราบวาคิวเต็มก็ตอเมื่อ
                                           เปนตาแหนงชองวางเสมอ ทาใหทราบวาควเตมกตอเมอ
(Rear+1)%maxSize= Front
งานมอบหมาย
• จงแสดงภาพขั้นตอนการเก็บคาลงในคิวเมื่อมีการใชชุดปฏิบัติการ
  Insert และ Remove ตามลําดับ
    Insert (A), Insert(B), Insert(C), Remove(), Insert(D),
  Remove(), Remove(), Insert(E), Insert(F)

More Related Content

Viewers also liked

Hashing function
Hashing functionHashing function
Hashing functionMeaw Sukee
 
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้นสรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
พัน พัน
 

Viewers also liked (6)

Graph
GraphGraph
Graph
 
Linklist
LinklistLinklist
Linklist
 
Hashing function
Hashing functionHashing function
Hashing function
 
Search
SearchSearch
Search
 
Sorting
SortingSorting
Sorting
 
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้นสรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
 

More from Meaw Sukee

Pix2
Pix2Pix2
Pix
PixPix
Report
ReportReport
Report
Meaw Sukee
 
Google classroom
Google classroomGoogle classroom
Google classroom
Meaw Sukee
 
Plan10
Plan10Plan10
Plan10
Meaw Sukee
 
Plan9
Plan9Plan9
Plan9
Meaw Sukee
 
Plan
PlanPlan
Edit
EditEdit
Problem
ProblemProblem
Problem
Meaw Sukee
 
Peeraya
PeerayaPeeraya
Peeraya
Meaw Sukee
 
ตัวอย่างเล่ม
ตัวอย่างเล่มตัวอย่างเล่ม
ตัวอย่างเล่ม
Meaw Sukee
 
Training_edmodo
Training_edmodoTraining_edmodo
Training_edmodoMeaw Sukee
 

More from Meaw Sukee (20)

Pix2
Pix2Pix2
Pix2
 
Pix
PixPix
Pix
 
Report
ReportReport
Report
 
Google classroom
Google classroomGoogle classroom
Google classroom
 
Plan10
Plan10Plan10
Plan10
 
Plan9
Plan9Plan9
Plan9
 
Plan
PlanPlan
Plan
 
Edit
EditEdit
Edit
 
Problem
ProblemProblem
Problem
 
Peeraya
PeerayaPeeraya
Peeraya
 
ตัวอย่างเล่ม
ตัวอย่างเล่มตัวอย่างเล่ม
ตัวอย่างเล่ม
 
Cal 190856
Cal 190856Cal 190856
Cal 190856
 
Total pub
Total pubTotal pub
Total pub
 
Public
PublicPublic
Public
 
Total pub
Total pubTotal pub
Total pub
 
Bro
BroBro
Bro
 
Training_edmodo
Training_edmodoTraining_edmodo
Training_edmodo
 
Frame
FrameFrame
Frame
 
Frame
FrameFrame
Frame
 
Table
TableTable
Table
 

Queue

  • 2. ความหมายของโครงสรางขอมูลแบบคิว • โครงสรางขอมูลแบบคิวเปนโครงสรางแบบรายการเชิงเสน • มีีการเรีียงลํําดับมีลักษณะการดํําเนินการนําขอมูลเขาทีี่ปลายดาน ั ี ิ ํ  ทายคิว เรียกวาสวนหลัง (Rear) • มีดําเนินการขอมูลออกจากโครงสรางปลายอีกดานหนึ่ง เรียกวา สวนหนา (Front) • ลักษณะเปนโครงสรางแบบ FIFO ( First-In-First-Out) หรือ FCFS (First-Come-First-Served)
  • 3. การนาคิวไปใชงาน ํ • นําคิวมาใชแกไขปญหาตางๆ ในแอปพลเคชน เชน การ ขาแถว นาควมาใชแกไขปญหาตางๆ ในแอปพลิ คชัน ชน การเขาแถว ่ เพื่อชําระเงิน • การนาควไปใชในการสารวจพจารณา เชน การสงขอมูลขาวสารใน รนํ ิ ไปใ ใน รสํ ร พิ ร น รสงขอม ข ส รใน เครือขาย การสงแฟมขอมูลไปยัง Printer หรือ รูปแบบสลับตู รถไฟบนราง
  • 4. การปฏิบัติการของคิว • 1. CreateQueue() ใชสรางคิวใหมขึ้นมาใชงานและกําหนดคาเริ่มตนตางๆ • 2. Insert(value, queue) ใชเพิ่มคาใหมเก็บลงในคิวที่ใชงานอยู และขยับ ตําแหนงใหมใหกับสวนทาย • 3. Remove (queue) ใชดึงคาออกจากคิวที่ใชงานอยูและสงคา value กลับมาให และขยับไปยังตําแหนงถัดไปใหเปนสวนหนา • 4. isEmpty(stack) ใชตรวจสอบวาคิดที่ใชงานอยูวางหรือไม ถาไมมีคาเก็บไว เลยจะสงคาจริงกลับให
  • 5. การทางานของคว การทํางานของคิว (a) เริมตนสรางคิว เรมตนสรางคว ่ Create Queue เปนคิววางไมมีสมาชิก เปนคววางไมมสมาชก (b) นาคา A เขามาเก็บเปนตัวแรกโดยใช Insert (A) ไดคิว Q=[A] ตัวชี้ Front=A, Rear=A ํ A (c) นาคา B เก็บตอโดยใช Insert (B) ไดคว Q=[A,B] ตัวชี้ Front=A, Rear=B ํ ิ A B
  • 6. การทางานของคว การทํางานของคิว (d)นาคา เขามาเกบตอ (d)นําคา C เขามาเก็บตอ Insert (C) ไดคิว Q=[A,B,C] ตัวชี้ Front=A, Rear=C ไดคว ตวช A B C (e) ตองการดึงคาออกมาโดยใช Remove() ไดคิว Q=[B,C] ตัวชี้ Front=B, Rear=C B C (f) นําคา D E เก็บตอโดยใช Insert (D) และ Insert(E) ไดคิว Q=[B C D E] ตัวชี้ Front=B นาคา D,E เกบตอโดยใช ไดคว Q=[B,C,D,E] ตวช Front=B, Rear=E B C D E
  • 7. การทางานของคว การทํางานของคิว (e) ตองการดึงคาออกมา 3 คา โดยใช Remove() และเก็บคา F โดยใช Insert(F) ไดคิว ตองการดงคาออกมา คา โดยใช และเกบคา โดยใช ไดคว Q=[E,F] ตัวชี้ Front=E, Rear=F E F
  • 8. • ในการสรางคิวมาใชงาน พื้นฐานจะใชอารเรยเก็บคาสมาชิก มีตัว แปร Front และ Rear เปนตัวชี้ตําแหนงสวนหนาและสวนทาย ของคิว • เกิดความลําบากเมื่อการเก็บคาเขามาถึงสมาชิกตัวสุดทายของอารเรย ทาใหเพมคาใหมไมได ทําใหเพิ่มคาใหมไมได • ถาหากเพิ่มจะเกิดการลนของขอมูล (Queue Overflow)
  • 9. 70 80 50 (a) ( ) 50 (b) 50 90 60 (c) 50 90 60 (d)
  • 10. คิววงกลม • ลักษณะเชิงเสนรูปวงแหวน เพื่อแกไขปญหาคิวแบบเชิงเสนแบบแนวตรง 4 4 4 3 3 60 0 3 0 90 70 0 50 50 50 80 2 2 2 1 1 1
  • 11. • สิ่งทิ่พิจารณาเมื่อคิววางเปลาทราบไดจาก Front กับ Rear มีคาเทากัน • เมื่อคิวเต็ม จะวนกลับมาจนมีคาเทากับ Front • ทําใหเกิดความสับสนวา Front กับ Rear มีคาเทากันจะเปนสถานะของคิว วางหรือคิวเต็ม maxSize-1 S 0 1 front rear สมาชกทอยู อนหนาสมาชกในตาแหนง สมาชิกที่อยกอนหนาสมาชิกในตําแหนง Front เปนตําแหนงชองวางเสมอ ทําใหทราบวาคิวเต็มก็ตอเมื่อ เปนตาแหนงชองวางเสมอ ทาใหทราบวาควเตมกตอเมอ (Rear+1)%maxSize= Front
  • 12. งานมอบหมาย • จงแสดงภาพขั้นตอนการเก็บคาลงในคิวเมื่อมีการใชชุดปฏิบัติการ Insert และ Remove ตามลําดับ Insert (A), Insert(B), Insert(C), Remove(), Insert(D), Remove(), Remove(), Insert(E), Insert(F)