Collections. Data structures Data Structures ( โครงสร้างข้อมูล ) เกิดจากการ นำข้อมูลขั้นพื้นฐานที่แบ่งแยกไม่ได้ (atomic data type) เช่น int, char, double.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
C# เบื้องต้น ก่อนการเขียนเกมด้วย XNA
Advertisements

จำนวน สถานะ NUMBER OF STATES. ประเด็นที่ สนใจ The number of distinct states the finite state machine needs in order to recognize a language is related.
Graphical User Interface charturong.ee.engr.tu.ac.th/CN208
Control Statement if..else switch..case for while do-while.
Stack.
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
LAB # 4.
บรรยายครั้งที่ 3: Queue
บรรยายครั้งที่ 2: Stack
Object-Oriented Programming
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
Lecture no. 10 Files System
Asst.Prof. Dr.Surasak Mungsing
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
หน่วยที่ 14 การเขียนโปรแกรมย่อย
สตริง (String).
โครงสร้างควบคุมการทำงาน
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
STACK ADT By Pantharee S.. Stack Model  A list with the restriction that insertions deletions can be performed in only one position (LIFO)  Push – insert.
List ADTs By Pantharee S..
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
Chapter 1/1 Arrays. Introduction Data structures are classified as either linear or nonlinear Linear structures: elements form a sequence or a linear.
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
In-Class Exercises Discrete Mathematics
Java collection framework
Introduction to Flowchart
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
การเขียนคำสั่งควบคุม การทำงานขั้นพื้นฐาน
หลักการโปรแกรม 1 Lecture 14: โปรแกรมย่อย ( การส่งพารามิเตอร์ แบบ pass by reference)
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
ครูวิชาการสาขาเคมี โรงเรียนมหิดลวิทยานุสรณ์
หลักการโปรแกรม 1 Lecture 8: การทำซ้ำ (while, do-while)
รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 1 Stack & Queue Lecturers : Boontee Kruatrachue.
1 exit() and break C++ provides a way to leave a program early (before its natural finish) with the exit() function. The format of exit() is as follows:
Streams. Formatted output cout
QueueQueue Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Page : Stability and Statdy-State Error Chapter 3 Design of Discrete-Time control systems Stability and Steady-State Error.
Queue Lecturer : Kritawan Siriboon, Room no. 913
บทที่ 4 การรับและแสดงผลข้อมูล
Linked List.
Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Package การสร้าง Package การใช้งาน Package อ.ธวัฒน์ชัย.
Chapter 9 ตัวชี้ pointer.
INC 161 , CPE 100 Computer Programming
Data Structure & Algorithm Concept
Linked List.
ภาษา C เบื้องต้น.
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
Object-Oriented Programming Paradigm
บทที่ 4 ตัวแปร (Variables)
Linked List Lecturer : Kritawan Siriboon, Room no. 913
บทที่ 1 ความรู้เบื้องต้น เกี่ยวกับระบบสารสนเทศ
The Collections Framework
Chapter 2 ตัวดำเนินการ และนิพจน์.
Method and Encapsulation
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
โครงสร้างข้อมูลและขั้นตอนวิธี (Data Structures and Algorithms)
เซต (SET) เราไม่สามารถให้คำจำกัดความกับค่าว่าเซตหรือสมาชิก
Variable Constant.
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
Data Structures and Algorithms 2/2561
Data Structures & Algorithms Using Python
การเขียนโปรแกรมภาษา Java (ต่อ)
Array: One Dimension Programming I 9.
Lecture 7: ทางเลือกแบบมีโครงสร้างซ้อนใน
การวิเคราะห์และออกแบบขั้นตอนวิธี
ใบสำเนางานนำเสนอ:

Collections

Data structures Data Structures ( โครงสร้างข้อมูล ) เกิดจากการ นำข้อมูลขั้นพื้นฐานที่แบ่งแยกไม่ได้ (atomic data type) เช่น int, char, double และ enum มา ประกอบเข้าด้วยกันกลายเป็นข้อมูลที่มี โครงสร้างใหญ่ขึ้น ซับซ้อนมากขึ้น วิธีการนำ ข้อมูลมาประกอบเข้าด้วยกัน ก่อให้เกิด โครงสร้างข้อมูลในรูปแบบต่างๆ เช่น List, Linked List, Stack, Queue, Tree, Graph, etc.

Abstract data type (ADT) Abstract data type (ADT) คือ ชนิดข้อมูลที่มีการ นิยามถึงพฤติกรรม (behavior) หรือวิธีการ นำไปใช้ มากกว่ารูปแบบข้อมูลที่เก็บอยู่ (representation) ADT นี้เป็นหัวใจสำคัญของวิธีการเขียนโปรแกรม แบบวัตถุ นั่นคือ เมื่อเราสร้างคลาสวัตถุ เรา จะต้องนึกถึง method ที่จะใช้ได้กับวัตถุในคลาส นั้นๆ

Behavior and representation Integer – Behavior (+, -, *, /, %,, >=, etc) – Representation (1’s complement, 2’s complement, sign magnitude, etc) Double – Behavior (+, -, *, /,, >=, etc) – Representation (pure notation, excess or biased notation, etc)

Behavior and representation Alphanumeric (character) – Behavior (display, >, >=, <, <=, etc) – Representation (Unicode, ASCII, EBCDIC, etc) String – Behavior (concat, extract, >, >=, <, <=, etc) – Representation (array of character, etc)

Behavior and representation Rational – Behavior (add, subtract, multiply, divide, toString) – Representation ( int, int) Student – Behavior (getID, getName, getCredits, setID, setName, setCredits, toString) – Representation (int, string, double)

Collections Vector, Stack, Queue, Map, Set, etc Each of these classes contains a collection of values of some simpler type. Learning how to use Learning how to implement efficiently (underlying algorithms and data structures)

Sequential Containers vectorFlexible-size array dequeDouble-ended queue. listDoubly linked list. forward_listSingly linked list. arrayFixed-size array. stringA specialized container, similar to vector, that contains characters

Container Adaptors stackBy default stack is implemented in terms of deque. queueBy default queue is implemented in terms of deque priority_queuepriority_queue is implemented on a vector.

Associative Containers Elements Ordered by Key mapAssociative array; holds key-value pairs setContainer in which the key is the value multimapMap in which a key can appear multiple times multisetSet in which a key can appear multiple times

Associative Containers Unordered collections unordered_mapMap organized by hash function unordered_setSet organized by hash function unordered_multimapHashed map; keys can appear multiple times unordered_multisetHashed set; keys can appear multiple times

Vector (ArrayList in Java) #include using std::vector; vector ivec; vector student; vector > file;// C++ 11 vector > file; // Old style

Defining and Initializing vectors vector svec;// svec is empty vector ivec;// ivec is empty vector ivec2(ivec);// copy ivec to ivec2 vector ivec3 = ivec;// copy ivec to ivec3 vector svec(ivec2)// error: svec holds // string

List Initializing a vector vector articles = {“a”, “an”, “the”}; vector v1{“a”, “an”, “the”}; vector v1(“a”, “an”, “the”);//error

Creating a specified number of Elements // ten int elements, each initialized to -1 vector ivec(10, -1); // ten strings, each element is “hi!” vector svec(10, “hi!”); // ten int elements, each initialized to 0 vector ivec(10); // ten strings, each an empty string vector svec(10); vector vi = 10;// Error: must use direct initialization

List Initializer or Element Count? vector v1(10); // v1 has ten elements with value 0 vector v2{10}; // v2 has one element with value 0 vector v3(10, 1); // v3 has ten elements with value 1 vector v4{10, 1}; // v4 has two elements with value 10 and 1

List Initializer or Element Count? vector v5{“hi”}; // v5 has one element vector v6(“hi”); // error vector v7{10}; // v7 has ten elements vector v8{10, “hi”}; // v8 has ten elements with // value hi

Adding elements to a vector vector v2; for (int i = 0; i != 100; ++i) v2.push_back(i); string word; vector text; while (cin >> word) { text.push_back(word); }

Other vector operation vector v{1, 2, 3, 4, 5, 6, 7, 8, 9}; for (auto &i : v) // for each element in v i *= i; // square the element value for (auto i : v)// for each element in v cout << i << “ “;// print the element cout << endl;

Vector Operations v.empty() // Return true if v is empty v.size() // Return the number of element v.push_back(t) // Add an element with value t v[n] // Return a reference to the element // at position n in v v1 = v2// v1 = {a, b, c…} v1 == v2 v1 != v2, >=

vector scores(11, 0); unsigned grade; while (cin >> grade) { if (grade <= 100) ++scores[grade/10]; } Input: Output:

vector ivec; for (decltype (ivec.size()) ix = 0; ix != 10; ++ix) ivec[ix] = ix ; // disaster: ivec has no elements for (decltype (ivec.size()) ix = 0; ix != 10; ++ix) ivec[ix].push_back(ix) ; // ok adds a new element

vector ivec; // empty vector cout << ivec[0]; // error: ivec has no element vector ivec2(10);// vector with ten element cout << ivec2[10]; // error: ivec2 has element 0..9