สวัสดีครับทุกท่าน
เอนทรี่แรกของผมเอนทรี่นี้จะเป็นการขอแนะนำกระบวนการทำงานเกี่ยวกับโครงสร้างข้อมูล (Data Structure) พื้นฐานรูปแบบหนึ่ง ที่เรียกกันว่า stack และ queue ครับ
ทั้งนี้ Stack และ Queue เป็นโครงสร้างข้อมูลที่คล้ายๆกัน ทำให้มักจะมีการกล่าวถึงควบคู่กันไปเสมอๆ ก่อนอื่น มาเริ่มกันที่ความหมายของทั้งสองคำก่อนดีกว่า
Stack คือโครงสร้างข้อมูลที่มีลักษณะเรียกกันว่า LiFo (Last in First out) หมายถึง การเข้าทีหลังและนำออกก่อน หรือ เข้าก่อนออกทีหลัง นั่นเองครับ ในการใช้ชีวิตประจำวันของเราเองก็มีกระบวนการในลักษณะเช่นเดียวกับ Stack อาทิเช่น กล่อง CD-R แฟ้มเอกสารแบบหนีบ รวมถึงการจัดเรียงของแนวตั้งทุกชนิด ทั้งนี้สังเกตว่าการจะหยิบออกต้องหยิบจากบน(อันที่ใส่ล่าสุด) ลงล่าง (อันที่ใส่ทีหลัง) เสมอๆ หรือก็คือลักษณะของ “กองซ้อน” นั่นเองครับ
Queue คือโครงสร้างข้อมูลที่มีลักษณะเรียกกันว่า FiFo (First in First out) ซึ่งหมายถึงการเข้าก่อน ออกก่อนครับ ในชีวิตประจำวันของเรานั้นมักจะพบกระบวนการในลักษณะของ Queue อยู่เสมอๆ เช่น การต่อแถวคอย หรือการต่อคิว ซึ่งเป็นที่รู้กันอยู่แล้วว่า ผู้ที่มาก่อนก็ย่อมได้รับสิทธิการบริการก่อนนั่นเอง
Stack นั้นจะมีการทำงานที่เรียกกันว่า push สำหรับการเพิ่มค่าเข้าไปในชุดข้อมูลด้านบน และ pop แทนการนำข้อมูลบนสุดออกมา ยกตัวอย่างเช่น
มีชุดข้อมูล A ประกอบด้วย [1,2,3,8,4,7]
เมื่อ push [a] เข้าไป จะได้ชุดข้อมูล A ประกอบด้วย [1,2,3,8,4,7,a] และเมื่อทำการ pop จะได้ค่า [a] ออกมาและทำให้ A กลับไปเป็น [1,2,3,8,4,7] เหมือนเดิมครับ
เพื่อให้เห็นภาพกระบวนการที่ชัดเจนมากขึ้น จะขอยกตัวอย่างโจทย์พื้นฐานสำหรับการฝึกใช้เบื้องต้นสักข้อนึงนะครับ
นายหัวหอมเป็นสมาชิกชุมนุมห้องสมุดโรงเรียนแห่งหนึ่ง วันนี้เป็นเวรของเขาในการทำการเรียงหนังสือในหมวดหนังสือนวนิยาย แต่ทว่า เขาเกิดเบื่อ จึงชวนนายหอมหัวมาเล่นเกมส์เรียงหนังสือกับเขา โดยกติกาการเล่นมีอยู่ว่า
เริ่มต้น นายหัวหอมจะจัดเรียงหนังสือจำนวน n เล่ม ในแต่ละเล่มจะมีจำนวนหน้า i(j) หน้า หลังจากนั้นนายหัวหอมจะสามารถหยิบหนังสือออกหนึ่งเล่ม หรือนำหนังสือเล่มใหม่ใส่มาเพิ่มก็ได้ หลังจากนายหัวหอมพอใจแล้ว นายหอมหัวจะต้องตอบว่าหนังสือที่อยู่บนสุดมีจำนวนกี่หน้า
ตัวอย่าง
เริ่มต้น 210 247 132 154 256 131 741
push 175
pop
push 143
push 19
pop
pop
pop
pop
pop
pop
จะได้ว่า หนังสือเล่มที่อยู่บนสุดมีจำนวนทั้งสิ้น 132 หน้า
บางคนอาจมองไม่ออก งั้นเราลองมาดูลำดับเหตุการณ์กันก่อนนะครับ
เริ่มต้น {210,247,132,154,256,131,741}
push 175 {210,247,132,154,256,131,741,175} // 175 เพิ่มขึ้นจากทางด้านหลัง
pop {210,247,132,154,256,131,741} // 175 ถูกเอาออกไป
push 143 {210,247,132,154,256,131,741,143} // 143 ถูกเพิ่มเข้ามา
push 19 {210,247,132,154,256,131,741,143,19} // 19 ถูกเพิ่มเข้ามา
pop {210,247,132,154,256,131,741,143} // 19 ถูกเอาออกไป
pop {210,247,132,154,256,131,741} // 143 ถูกเอาออกไป
pop {210,247,132,154,256,131} // 741 ถูกเอาออกไป
pop {210,247,132,154,256} // 131 ถูกเอาออกไป
pop {210,247,132,154} // 256 ถูกเอาออกไป
pop {210,247,132} // 154 ถูกเอาออกไป
สิ้นสุด
สุดท้าย จะได้เล่มที่อยู่บนสุด มีจำนวนทั้งสิ้น 132 หน้าตามที่ตอบไว้เบื้องต้นนั่นเอง
หลังจากที่นายหอมหัวสามารถเอาชนะเกมส์นี้ได้อย่างง่ายดาย นายหัวหอมจึงอัพเกรดการเล่นขึ้น โดนมีกติกาที่เปลี่ยนไปดังนี้
“หลังจากทำการเรียงใหม่ตามใจชอบแล้ว นามหอมหัวจะต้องบอกจำนวนหน้าทั้งหมดของตั้งหนังสือทั้งหมดที่เหลืออยู่”
++
ในส่วนของ Queue หรือแถวคอยนั้น จะประกอบไปด้วยคำสั่งหลักๆคือ enqueue และ dequeue แทนที่ push และ pop ครับ อย่างเช่นว่า
มีชุดข้อมูล A = [1,8,7,6,3]
เมื่อทำการ enqueue [a] เข้าไปจะได้เป็น A = [1,8,7,6,3,a] และเมื่อทำการ dequeue นั้น จะได้ [1] ออกมาและทำให้ A = [8,7,6,3,a] ครับ
ลองมาดูโจทย์เบื้องต้นในส่วนของ Queue กันเลยดีกว่า
นายหัวหอมและนายหอมหัว ยังคนวนเวียนอยู่บนกองหนังสือนิยายจำนวนมากที่เขาทั้งสองต้องช่วยกันเก็บเข้าที่ แล้วพวกเขาก็พบว่ามันน่าเบื่อมาก ทำให้นายหอมหัวเสนอที่จะเล่นเกมแข่งกับนายหัวหอมอีกครั้ง แต่ในครั้งนี้นายหอมหัวจะเป็นคนตั้งโจทย์
ในชั้นหนังสือหนึ่งชั้น นายหอมหัวจะมีสิทธิในการเอาหนังสือที่อยู่หน้าสุดออกและเพิ่มหนังสือเล่มใหม่เข้าไปด้านหลัง โดยจะบอกแค่ว่า หนังสือแต่ละเล่มนั้นเป็นเล่มที่เท่าไรในนวนิยายมหากาพย์ โคนาน ซึ่งมีออกมาแล้วมากกว่า 60 เล่ม นายหัวหอมจะต้องตอบเพียงสั้นๆว่า ในชั้นหนังสือชั้นนั้นหลังจากผ่านกระบวนการแล้วยังมีเล่มที่ซ้ำกันอยู่หรือไม่
ตัวอย่าง
เริ่มต้น 1,2,7,2,4,6,8
enqueue 5
dequeue
dequeue
enqueue 1
enqueue 3
dequeue
ตอบ ไม่มีเล่มที่ซ้ำกัน
เริ่มต้น {1,2,7,2,4,6,8}
enqueue 5 {1,2,7,2,4,6,8,5} // 5 ถูกต่อเข้ามา
dequeue {2,7,2,4,6,8,5} // 1 ถูกหยิบออกไป
dequeue {7,2,4,6,8,5} // 2 ถูกหยิบออกไป
enqueue 1 {7,2,4,6,8,5,1} // 1 ถูกเพิ่มเข้ามา
enqueue 3 {7,2,4,6,8,5,1,3} // 3 ถูกเพิ่มเข้ามา
dequeue {2,4,6,8,5,1,3} // 7 ถูกดึงออกไป
สิ้นสุด
จะพบว่า ไม่มีเล่มใดที่ซ้ำกัน ในเรียงอยู่ในชั้นนี้ หลังจากผ่านกระบวนการเสร็จแล้วครับ
ในการทำโจทย์ทางคอมพิวเตอร์นั้น บางครั้งที่ Stack and Queue เข้ามามีบทบาทร่วมกับกระบวนการคิดอื่นๆ
ทั้งนี้ Stack and Queue ย่อมตั้งใช้ร่วมกับข้อมูลในรูปแบบที่เป็น Array หรือ Linked List
และนอกจากนี้ยังมี STL สำหรับ Stack และ Queue ไว้รองรับการใช้งานอยู่แล้วครับ
ซึ่งส่วนนี้จะขอกล่าวถึงต่อไปในตอนต่อไปนะครับ ^^
ถ้ามีใครสงสัยตรงจุดไหน ฝากคำถามไว้ทางคอมเมนท์ได้เลยนะครับ ’ w ‘
Comments
Funny Humor Cialis video ad/commercial
Hello! Funny Humor Cialis video ad/commercial , The Money Making Techniques of the Drug Makers! , Weekend Pills Tadalafil for Male Erection Problems , Tamiflu , Know How to Make Your Skin Feel Younger ,
Anabolic Steroid Side Effects
Hello! Anabolic Steroid Side Effects , Homeopathy is Safe and Effective Medicine , A Cheaper And More Effective Alternative To Male Enhancement Prescriptions , Online Pharmacy: Long Erection is Just a Click Away , The Three ED Drugs ,
Impotence at the Tour De France
Hello! Impotence at the Tour De France , Natural Ed Drugs Can Bring in Unnatural Effects to your Health! , Viagra; A Complete Review , Dr. Williams Discusses the Side Effects of Viagra , The Effects Of Vigorelle Vaginal Stimulant Cream ,
More Pleasure With Ed Rx
Hello! More Pleasure With Ed Rx , Cialis And Viagra Power! , How Viagra , The Best Drug for Male Erection Dysfunction Problem , cialis plus viagra ,
cialis
Hello! cialis ,
viagra
Hello! viagra ,
cialis
Hello! cialis ,
cialis
Hello! cialis ,
viagra
Hello! viagra ,
All About Tadalfil for Impotence Treatment
Hello! All About Tadalfil for Impotence Treatment , Cialis Real Funny Commercial/Ad featuring Cuba Gooding Jr. , şahan cialis , VIAGRA impotency sildenafil pharmacy pills viagra cialis , 36 Hour Cialis Commercial Parody ,
Make a Mental Note; the Fda is Looking Out for You
Hello! Make a Mental Note; the Fda is Looking Out for You , Circulation’s Effect on Intimacy , How Safe are These Products Claiming to Enhance Male Performance? , Little Blue Pill for Impotence Treatment , A Very Effective Advertising Medium and Ruled Supreme for Many Years on a Non Existent Budget ,
cialis plus viagra
Hello! cialis plus viagra , The Money Making Techniques of the Drug Makers! , Cialis spoof , Tamiflu , Sahan Cialis Disi Yakaris ,
cialis
Hello! cialis , cialis , viagra , cialis , viagra ,
Phentermine
PHLXZX Phentermine QxQAuS Cialis dIORqv Viagra 4728 Cheap Cialis iZvdHc Cheap Tramadol faEgjh Cheap Phentermine >:-OOO Cheap viagra 6010 Valium suuRs
viagra
Hello! viagra , cialis , cialis , viagra , viagra ,
cialis
Hello! cialis , generic viagra , cialis , viagra , viagra ,
cialis
Hello! cialis , viagra , generic viagra , cialis , viagra ,
cialis
Hello! cialis , viagra , viagra , viagra , viagra ,
Viagra Side Effects & Original Research
Hello! Viagra Side Effects & Original Research , How Impotence Created A Billionaire , Why Ed Treatment Rationing on the Nhs Should be Relaxed , Impotence Home Remedies- Why the Natural Cure is Better Than the Colorful Pill , Why are Women Left Out When We Talk About Libido? ,
Cialis With Younger Women
Hello! Cialis With Younger Women , Enjoy Perfect Erection to Love , Grandpas Having a HOT Sex – Cialis Commercial – Tadalafil , Cialis And Viagra Power! , Funny Cialis Ad With Cuba Gooding Jr. ,
viagra
Hello! viagra , cialis , cialis , cialis , cialis ,
cialis
Hello! cialis , viagra , cialis , cialis , viagra ,
cialis
Hello! cialis , cialis , viagra , viagra , viagra ,
viagra
Hello! viagra , generic viagra , cialis , cialis , viagra ,
viagra
Hello! viagra , viagra , cialis , generic viagra , viagra ,
viagra
Hello! viagra , viagra , cialis , cialis , viagra ,
viagra
Hello! viagra , cialis , viagra , viagra , generic viagra ,
viagra
Hello! viagra , cialis , viagra , viagra , cialis ,
cialis
Hello! cialis , cialis , cialis , viagra , viagra ,
viagra
Hello! viagra , viagra , cialis , cialis , cialis ,
cialis
Hello! cialis , cialis , viagra , viagra , cialis ,
generic viagra
Hello! generic viagra , viagra , viagra , cialis , cialis ,
viagra
Hello! viagra , viagra , cialis , cialis , cialis ,
cialis
Hello! cialis , viagra , cialis , viagra , viagra ,
generic viagra
Hello! generic viagra , cialis , cialis , viagra , viagra ,
generic viagra
Hello! generic viagra , cialis , viagra , cialis , viagra ,
cialis
Hello! cialis , viagra , cialis , viagra , cialis ,
cialis
Hello! cialis , cialis , viagra , generic viagra , viagra ,
generic viagra
Hello! generic viagra , cialis , viagra , cialis , viagra ,
cialis
Hello! cialis , viagra , cialis , cialis , viagra ,
viagra
Hello! viagra , viagra , cialis , cialis , viagra ,
generic viagra
Hello! generic viagra , cialis , cialis , viagra , viagra ,
viagra
Hello! viagra , cialis , cialis , cialis , viagra ,
viagra
Hello! viagra , cialis , viagra , cialis , viagra ,
viagra
Hello! viagra , cialis , viagra , cialis , viagra ,
cialis
Hello! cialis , cialis , viagra , viagra , cialis ,
Buy Cialis Online
FPocxknM Buy Cialis Online 6794 Tramadol 9436 Cheap viagra rVzQNQ Cheap Phentermine gliMJ Ultram 5508 Buy Ambien aUfCm Buy Viagra online :-O Cialis GbcfT
generic viagra
Hello! generic viagra , cialis , viagra , cialis , viagra ,
viagra
Hello! viagra , cialis , cialis , viagra , cialis ,
cialis
Hello! cialis ,