<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ta.in.th/index.php?action=history&amp;feed=atom&amp;title=2110211_data_struct</id>
	<title>2110211 data struct - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ta.in.th/index.php?action=history&amp;feed=atom&amp;title=2110211_data_struct"/>
	<link rel="alternate" type="text/html" href="https://wiki.ta.in.th/index.php?title=2110211_data_struct&amp;action=history"/>
	<updated>2026-05-02T17:01:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0-alpha</generator>
	<entry>
		<id>https://wiki.ta.in.th/index.php?title=2110211_data_struct&amp;diff=111&amp;oldid=prev</id>
		<title>Tata: Created page with &quot;ยินดีต้อนรับสู่ wiki เพื่อติว 2110211 Data Structure (By C++) &lt;br&gt; * '''โจทย์ challenge ทำไม่ได้อย...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.ta.in.th/index.php?title=2110211_data_struct&amp;diff=111&amp;oldid=prev"/>
		<updated>2019-03-07T17:20:20Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;ยินดีต้อนรับสู่ wiki เพื่อติว 2110211 Data Structure (By C++) &amp;lt;br&amp;gt; * &amp;#039;&amp;#039;&amp;#039;โจทย์ challenge ทำไม่ได้อย...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;ยินดีต้อนรับสู่ wiki เพื่อติว 2110211 Data Structure (By C++) &amp;lt;br&amp;gt;&lt;br /&gt;
* '''โจทย์ challenge ทำไม่ได้อย่าไปเครียด'''&lt;br /&gt;
* '''สำหรับเทพ หรือคนที่ต้องการความท้าทายอย่างสุดๆ''' แนะนำโจทย์ challenge ด้านล่างสุด &lt;br /&gt;
ปล. ขอบคุณพื้นที่ ของ ชมรมคอมพิวเตอร์โอลิมปิก โรงเรียนอัสสัมชัญ&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''โดย TATA201201 Gr.J 96 CP 39'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Syllabus Schedule =&lt;br /&gt;
* วันที่	หัวเรื่อง&lt;br /&gt;
* 28 และ 30 พ.ย.	Introduction to C++, Intro to STL&lt;br /&gt;
* 4 และ 6 พ.ย.	Pointer, &amp;lt;vector&amp;gt;, &amp;lt;pair&amp;gt;, basic &amp;lt;map&amp;gt;, Using iterator, sort(), find(),&lt;br /&gt;
* 11 และ 13 พ.ย.	Composition of data structure, e.g., vector of map. &lt;br /&gt;
* 18 และ 20 พ.ย.	&amp;lt;deque&amp;gt;, &amp;lt;set&amp;gt;, x 3 / 2 problem &lt;br /&gt;
* 25 และ 27 พ.ย.	&amp;lt;map&amp;gt; with custom sort, overloading of &amp;lt;, custom sort&lt;br /&gt;
* 26 และ 28 พ.ย.	Class in C++&lt;br /&gt;
* 2 และ 4 ธ.ค.	Implementing CP::vector&lt;br /&gt;
* 9 และ 11 ธ.ค.	Stack, Queue, Implementing CP::deque&lt;br /&gt;
* 16 และ 18 ธ.ค.	Priority Queue, Binary Heap, Implementing CP::priority_queue&lt;br /&gt;
* 24 ธ.ค.	Mid-term Exam&lt;br /&gt;
* 30 ธ.ค. และ 1 ม.ค.	หยุดวันปีใหม่&lt;br /&gt;
* 6 และ 8 ม.ค.	Hash&lt;br /&gt;
* 13 และ 15 ม.ค.	Implementing CP::unordered_sort&lt;br /&gt;
* 20 และ 22 ม.ค.	หยุดกีฬามหาวิทยาลัย&lt;br /&gt;
* 27 และ 29 ม.ค.	Linked List, Doubly Linked List&lt;br /&gt;
* 3 และ 5 ก.พ.	Implementing CP::list, Binary Tree&lt;br /&gt;
* 10 และ 12 ก.พ.	Binary Tree, Binary Search Tree &lt;br /&gt;
* 17 และ 19 ก.พ.	AVL Tree, implementing CP::map&lt;br /&gt;
* 25 ก.พ.	Final Exam&lt;br /&gt;
&lt;br /&gt;
= Midterm =&lt;br /&gt;
* โปรดอ่าน&lt;br /&gt;
** หัดอ่าน reference ที่อาจารย์แจก มันมีประโยชน์&lt;br /&gt;
** ใช้เป็นอันเดียว อันอื่นก็น่าจะเป็นได้ไม่ยาก มันเหมือนกันหมดแหละ&lt;br /&gt;
&lt;br /&gt;
== STL Containers ==&lt;br /&gt;
&lt;br /&gt;
=== vector ===&lt;br /&gt;
* Extendable array&lt;br /&gt;
* constructor&lt;br /&gt;
** vector&amp;lt;T&amp;gt; v;&lt;br /&gt;
** vector&amp;lt;T&amp;gt; v(size_t size); // สร้างให้เริ่มต้นมี size ช่อง&lt;br /&gt;
** vector&amp;lt;T&amp;gt; v(iterator begin, iterator end); // สร้างโดยแทรกข้อมูลจาก begin -&amp;gt; end&lt;br /&gt;
* Function ที่สำคัญ&lt;br /&gt;
** v.size(); // ขนาดที่ array สามารถจุได้&lt;br /&gt;
** v.push_back(T value); // ต่อท้าย array &amp;gt;&amp;gt; constant time&lt;br /&gt;
** v.pop_back(); // ลบตัวทุดท้ายออก &amp;gt;&amp;gt; constant time&lt;br /&gt;
** v.insert(iterator, T value); // แทรกลงตำแหน่งใดๆตาม iterator &amp;gt;&amp;gt; ใช้เวลาแปรตามตำแหน่ง&lt;br /&gt;
*** v.insert(iterator place, iterator begin, iterator end); // แทรกลงตำแหน่ง place โดยเอาข้อมูลจาก begin -&amp;gt; end มาแทรก&lt;br /&gt;
** v.erase(iterator) // ลบข้อมูล&lt;br /&gt;
*** v.erase(iterator first, iterator last); // ลบข้อมูลเป็นช่วง&lt;br /&gt;
* Iterator&lt;br /&gt;
** vector&amp;lt;T&amp;gt;::iterator it;&lt;br /&gt;
** v.begin();&lt;br /&gt;
** v.end();&lt;br /&gt;
** access ที่ตำแหน่งใดๆ v.begin()+5; มีค่าเหมือน v[5];&lt;br /&gt;
* ตัวอย่างการใช้งาน&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vector&amp;lt;int&amp;gt; v;&lt;br /&gt;
for(int i=0;i&amp;lt;10;i++) v.push_back(i);&lt;br /&gt;
v.insert(v.begin(),999);&lt;br /&gt;
v.pop_back();&lt;br /&gt;
for(size_t i=0;i&amp;lt;v.size();i++) cout &amp;lt;&amp;lt; v[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot; ;&lt;br /&gt;
cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pair ===&lt;br /&gt;
* เก็บข้อมูลเป็นคู่อันดับ&lt;br /&gt;
* Constructor&lt;br /&gt;
** pair&amp;lt;T1, T2&amp;gt; p(T1 val, T2 val);&lt;br /&gt;
** make_pair(val1, val2);&lt;br /&gt;
* Access&lt;br /&gt;
** pair&amp;lt;int,int&amp;gt; v1(15,20);&lt;br /&gt;
** cout &amp;lt;&amp;lt; v1.first() &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; v1.second(); // ได้ข้อมูลตัวแรก 15 และข้อมูลตัวหลัง 20 ตามลำดับ&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
* Constructor&lt;br /&gt;
** set&amp;lt;T&amp;gt; s;&lt;br /&gt;
** set&amp;lt;T&amp;gt; s(iterator begin, iterator end); // กำหนดค่าเริ่มต้นให้ set&lt;br /&gt;
* Function ที่ควรรู้&lt;br /&gt;
** s.insert(T x); // แทรก คืนค่าเป็น pait&amp;lt;iterator,bool&amp;gt; บอกว่า แทรกตำแหน่งไหน และได้แทรกรึป่าว (เผื่อมีซ้ำ)&lt;br /&gt;
** s.erase(T x); // ลบ&lt;br /&gt;
*** s.erase(iterator) // ลบตัวนั้น&lt;br /&gt;
*** s.erase(iterator begin, iterator end); // ลบเป็นช่วง&lt;br /&gt;
** s.find(T x); // ค้นหา&lt;br /&gt;
** s.size(); // หาขนาดของ set&lt;br /&gt;
* Iterator&lt;br /&gt;
** set&amp;lt;T&amp;gt;::iterator it;&lt;br /&gt;
** s.begin(); s.end(); // เริ่มต้น สิ้นสุด&lt;br /&gt;
** ++it; ได้ it+5; ไม่ได้&lt;br /&gt;
* ตัวอย่างการใช้งาน&lt;br /&gt;
** เก็บข้อมูลที่ไม่ต้องการตัวซ้ำ&lt;br /&gt;
** หาคำที่แตกต่างกัน&lt;br /&gt;
&lt;br /&gt;
=== map ===&lt;br /&gt;
* Constructor&lt;br /&gt;
** map&amp;lt;KeyType, MappedType&amp;gt; m;&lt;br /&gt;
* Function ที่ควรรู้&lt;br /&gt;
** m.insert(make_pair(KeyType Kval, MappedType Mval)); // แทรก&lt;br /&gt;
*** แทรกอีกแบบ m[KeyType Kval] = MappedType Mval; // มองเป็นอาเร&lt;br /&gt;
** m.erase(iterator);&lt;br /&gt;
*** m.erase(iterator begin, iterator end); &lt;br /&gt;
* Iterator&lt;br /&gt;
** map&amp;lt;T,T&amp;gt;::iterator it;&lt;br /&gt;
** m.begin(); m.end(); // ข้อมูลเรียงลำดับ&lt;br /&gt;
** it คืนค่าได้ pointer to pair เรียกใช้งานได้แบบ it-&amp;gt;first; it-&amp;gt;second;&lt;br /&gt;
* ตัวอย่างการใช้งาน&lt;br /&gt;
** การนับคำซ้ำ&lt;br /&gt;
* SMS [[http://www.programming.in.th/task/rev2_problem.php?pid=1027 LINK]]&lt;br /&gt;
&lt;br /&gt;
=== stack ===&lt;br /&gt;
* Last In First Out เข้าหลังออกก่อน&lt;br /&gt;
* Constructor&lt;br /&gt;
** stack&amp;lt;T&amp;gt; s;&lt;br /&gt;
* Function ที่ควรรู้&lt;br /&gt;
** s.push(T value); // ใส่ลง stack&lt;br /&gt;
** s.pop(); // เอาข้อมูลออกจาก stack โดยไม่อ่าน&lt;br /&gt;
** s.top(); // อ่านข้อมูลบนสุดของ stack&lt;br /&gt;
** s.size(); // จำนวนข้อมูลใน stack&lt;br /&gt;
* ประโยชน์&lt;br /&gt;
** เช็ควงเล็บ&lt;br /&gt;
** แปลงนิพจน์ Infix &amp;gt; Postfix&lt;br /&gt;
** คำนวณนิพจน์แบบ Postfix&lt;br /&gt;
** การค้นหาตามแนวลึก Breadth First Search&lt;br /&gt;
* Three paren [[http://www.programming.in.th/task/rev2_problem.php?pid=1121 LINK]]&lt;br /&gt;
&lt;br /&gt;
=== Queue ===&lt;br /&gt;
* First In First Out เข้าก่อนออกก่อน&lt;br /&gt;
* Constructor&lt;br /&gt;
** queue&amp;lt;T&amp;gt; q;&lt;br /&gt;
* Function ที่ควรรู้&lt;br /&gt;
** q.push(T value); // ใส่ลง queue&lt;br /&gt;
** q.pop(); // เอาข้อมูลออกจาก queue โดยไม่อ่าน&lt;br /&gt;
** q.front(); // อ่านข้อมูลต้น queue&lt;br /&gt;
** q.back(); // อ่านข้อมูลท้าย queue&lt;br /&gt;
** q.size(); // จำนวนข้อมูลใน queue&lt;br /&gt;
* ประโยชน์&lt;br /&gt;
** จัดลำดับการทำงาน&lt;br /&gt;
** การค้นหาตามแนวกว้าง Breadth First Search&lt;br /&gt;
** Radix Sort&lt;br /&gt;
* Nugget Number (คล้าย *3/2 มั้ง) [[http://www.programming.in.th/task/rev2_problem.php?pid=1003 LINK]]&lt;br /&gt;
* Plate [[http://www.programming.in.th/task/rev2_problem.php?pid=1004 LINK]]&lt;br /&gt;
&lt;br /&gt;
=== Deque ===&lt;br /&gt;
* Double Ended Queue คล้าย Vector + Stack + Queue&lt;br /&gt;
&lt;br /&gt;
=== Priority Queue ===&lt;br /&gt;
* Default &amp;gt; Max ออกมาก่อนเสมอ&lt;br /&gt;
* Constructor&lt;br /&gt;
** priority_queue&amp;lt;T&amp;gt; pq;&lt;br /&gt;
* Function ที่ควรรู้&lt;br /&gt;
** pq.push(T value); // ใส่ลง queue&lt;br /&gt;
** pq.pop(); // เอาข้อมูลออกจาก queue โดยไม่อ่าน&lt;br /&gt;
** pq.top(); // อ่านข้อมูลต้น queue&lt;br /&gt;
** pq.size(); // จำนวนข้อมูลใน queue&lt;br /&gt;
* ประโยชน์&lt;br /&gt;
** หาตัวที่มากสุด k อันดับ&lt;br /&gt;
** เรียงลำดับข้อมูล&lt;br /&gt;
** Huffman Encoding&lt;br /&gt;
&lt;br /&gt;
== Operator Overloading ==&lt;br /&gt;
&lt;br /&gt;
=== Overload operator&amp;lt; ===&lt;br /&gt;
&lt;br /&gt;
=== compare class ===&lt;br /&gt;
&lt;br /&gt;
=== compare function ===&lt;br /&gt;
&lt;br /&gt;
== Implementing Data Structure ==&lt;br /&gt;
&lt;br /&gt;
=== vector ===&lt;br /&gt;
* You can find it in the slide of this course.&lt;br /&gt;
&lt;br /&gt;
=== Stack ===&lt;br /&gt;
* You can find it in the slide of this course.&lt;br /&gt;
&lt;br /&gt;
=== Queue ===&lt;br /&gt;
* You can find it in the slide of this course.&lt;br /&gt;
&lt;br /&gt;
=== priority queue ===&lt;br /&gt;
* -- ยกยอดไป final --&lt;br /&gt;
&lt;br /&gt;
== โจทย์ Challenge ==&lt;br /&gt;
* Perket [[http://www.programming.in.th/task/rev2_problem.php?pid=0019 LINK]]&lt;br /&gt;
* Numbers [[http://www.programming.in.th/task/rev2_problem.php?pid=0032 LINK]]&lt;br /&gt;
* Include [[http://www.programming.in.th/task/rev2_problem.php?pid=1057 LINK]]&lt;/div&gt;</summary>
		<author><name>Tata</name></author>
		
	</entry>
</feed>