ผลต่างระหว่างรุ่นของ "Psl66/week02 stl1"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) (สร้างหน้าด้วย "หน้านี้เป็นส่วนหนึ่งของวิชา Problem Solving Lab ปีการศึกษา 2566 สัป...") |
Jittat (คุย | มีส่วนร่วม) |
||
(ไม่แสดง 7 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน) | |||
แถว 1: | แถว 1: | ||
− | หน้านี้เป็นส่วนหนึ่งของวิชา [[Problem | + | หน้านี้เป็นส่วนหนึ่งของวิชา [[Problem solving lab]] ปีการศึกษา 2566 |
สัปดาห์นี้โจทย์จะเป็นการฝึกใช้ STL โดยเน้นเกี่ยวกับ list, stack และ queue | สัปดาห์นี้โจทย์จะเป็นการฝึกใช้ STL โดยเน้นเกี่ยวกับ list, stack และ queue | ||
− | คลิปประกอบ | + | '''คลิปประกอบ''' [https://www.youtube.com/watch?v=43TT0RlaqUA แนะนำ STL] |
+ | |||
+ | '''เอกสาร STL''': [https://en.cppreference.com/w/cpp/container/list std::list ที่ cppref], [https://cplusplus.com/reference/list/list/ list ที่ cplusplus.com], [https://www.geeksforgeeks.org/list-cpp-stl/ list ที่ geeksforgeeks] | ||
+ | |||
+ | การอ่าน input และตรวจสอบ EOF: [[Ske algo lab/read input]] | ||
+ | |||
+ | == รายการโจทย์และหมายเหตุ == | ||
+ | |||
+ | * '''<tt>listwork1</tt>''' และ '''<tt>listwork2</tt>''' ควรทำสองข้อนี้ก่อน โจทย์ถูกออกแบบมาตอนให้เขียน linked list เอง แต่ตอนนี้สามารถใช้ STL ได้เลย | ||
+ | *: function ของ list ที่อาจจะเป็นประโยชน์ น่าจะมีดังนี้ | ||
+ | ** <tt>front</tt> และ <tt>back</tt> ข้อมูลหน้าสุด ข้อมูลหลังสุด | ||
+ | ** <tt>push_front</tt> และ <tt>push_back</tt> ใส่ข้อมูลที่ด้านหน้า ใส่ข้อมูลที่ด้านท้าย | ||
+ | ** <tt>pop_front</tt> และ <tt>pop_back</tt> เอาข้อมูลหน้าสุดทิ้ง เอาข้อมูลท้ายสุดทิ้ง | ||
+ | |||
+ | * '''<tt>ic</tt>''' ข้อนี้น่าจะฝึกหัดทั่วไป ฝึกฟังก์ชันชุดเดียวกับด้านบน | ||
+ | |||
+ | * '''<tt>trains</tt>''' | ||
+ | ** อาจจะมีอาร์เรย์ของ linked list แทนรายการของตู้รถไฟที่ชานชลาต่าง ๆ | ||
+ | ** ข้อนี้ ถ้าเขียน linked list เองอาจจะตรงไปตรงมา แต่ถ้าใช้ STL ตอนย้ายขบวนรถข้ามชานชลา ถ้าทำตรง ๆ ไม่น่าจะทำงานได้ทัน ต้องใช้ฟังก์ชัน `splice` [https://en.cppreference.com/w/cpp/container/list/splice ref] เดี๋ยวจะมีคลิปอธิบายเพิ่มเติม | ||
+ | |||
+ | * '''<tt>uva514_rails</tt>''' ให้ทดลองดูว่าลำดับของตู้ควรจะเป็นอย่างไรจึงจะสามารถเปลี่ยนได้ (hint: ให้พิจารณาการที่ตู้รถไฟเข้าและออกจากรางพิเศษในลำดับอย่างไร) | ||
+ | |||
+ | * '''<tt>chains</tt>''' (optional 2 แต้ม) ข้อนี้ยาก ถ้าจะทำให้ได้เต็ม คาดว่าต้องเขียน linked list เอง |
รุ่นแก้ไขปัจจุบันเมื่อ 07:51, 4 ธันวาคม 2566
หน้านี้เป็นส่วนหนึ่งของวิชา Problem solving lab ปีการศึกษา 2566
สัปดาห์นี้โจทย์จะเป็นการฝึกใช้ STL โดยเน้นเกี่ยวกับ list, stack และ queue
คลิปประกอบ แนะนำ STL
เอกสาร STL: std::list ที่ cppref, list ที่ cplusplus.com, list ที่ geeksforgeeks
การอ่าน input และตรวจสอบ EOF: Ske algo lab/read input
รายการโจทย์และหมายเหตุ
- listwork1 และ listwork2 ควรทำสองข้อนี้ก่อน โจทย์ถูกออกแบบมาตอนให้เขียน linked list เอง แต่ตอนนี้สามารถใช้ STL ได้เลย
- function ของ list ที่อาจจะเป็นประโยชน์ น่าจะมีดังนี้
- front และ back ข้อมูลหน้าสุด ข้อมูลหลังสุด
- push_front และ push_back ใส่ข้อมูลที่ด้านหน้า ใส่ข้อมูลที่ด้านท้าย
- pop_front และ pop_back เอาข้อมูลหน้าสุดทิ้ง เอาข้อมูลท้ายสุดทิ้ง
- ic ข้อนี้น่าจะฝึกหัดทั่วไป ฝึกฟังก์ชันชุดเดียวกับด้านบน
- trains
- อาจจะมีอาร์เรย์ของ linked list แทนรายการของตู้รถไฟที่ชานชลาต่าง ๆ
- ข้อนี้ ถ้าเขียน linked list เองอาจจะตรงไปตรงมา แต่ถ้าใช้ STL ตอนย้ายขบวนรถข้ามชานชลา ถ้าทำตรง ๆ ไม่น่าจะทำงานได้ทัน ต้องใช้ฟังก์ชัน `splice` ref เดี๋ยวจะมีคลิปอธิบายเพิ่มเติม
- uva514_rails ให้ทดลองดูว่าลำดับของตู้ควรจะเป็นอย่างไรจึงจะสามารถเปลี่ยนได้ (hint: ให้พิจารณาการที่ตู้รถไฟเข้าและออกจากรางพิเศษในลำดับอย่างไร)
- chains (optional 2 แต้ม) ข้อนี้ยาก ถ้าจะทำให้ได้เต็ม คาดว่าต้องเขียน linked list เอง