Presentation is loading. Please wait.

Presentation is loading. Please wait.

What are ADTs, STL Intro, vector, list, queue, stack Learning & Development Team Telerik Software Academy.

Similar presentations


Presentation on theme: "What are ADTs, STL Intro, vector, list, queue, stack Learning & Development Team Telerik Software Academy."— Presentation transcript:

1 What are ADTs, STL Intro, vector, list, queue, stack Learning & Development Team http://academy.telerik.com Telerik Software Academy

2 1. Basic Abstract Data Types 1.List 2.Linked List 3.Stack 4.Queue 2. ADTs in STL 1.STL Intro 2.Iterators 3.Vector, list, stack, queue 2

3 Basic Data Structures

4  An Abstract Data Type (ADT) is a data type together with the operations, whose properties are specified independently of any particular implementation  ADT are set of definitions of operations  Can have several different implementations  Different implementations can have different efficiency

5  Linear structures  Lists: fixed size and variable size  Stacks: LIFO (Last In First Out) structure  Queues: FIFO (First In First Out) structure  Trees  Binary, ordered, balanced, etc.  Dictionaries (maps)  Contain pairs (key, value)  Hash tables: use hash functions to search/insert

6

7  Data structure (container) that contains a sequence of elements  Can have variable size  Elements are arranged linearly, in sequence  Can be implemented in several ways  Statically (using array  fixed size)  Dynamically (linked implementation)  Using resizable array

8  Implemented by an array  Direct access by index (fast)  Insertion and deletion and resizing are slow operations L21871236119 0 1 2 3 4 5 6 7

9  Dynamic (pointer-based) implementation  Direct access to first/last element  No access by index  go through all previous elements (slow)  Insertion and deletion are fast  Resizing – add new element at the end or beginning 2next7next head4next5next null

10

11  LIFO (Last In First Out) structure  Elements inserted (push) at “top”  Elements removed (pop) from “top”  Useful in many situations  E.g. the execution stack of the program  Can be implemented in several ways  Statically (using array)  Dynamically (linked implementation)

12

13  FIFO (First In First Out) structure  Elements inserted at the tail (Enqueue)  Elements removed from the head (Dequeue)  Useful in many situations  Print queues, message queues, etc.  Can be implemented in several ways  Statically (using array)  Dynamically (using pointers)

14 Introduction, Basic ADT Implementations

15  Standard Template Library  C++ Library  Implements a lot of computer science fundamentals  Container classes, Algorithms  Iterators  Mostly template-based  Algorithms decoupled from containers through iterators 15

16  Containers  Data structures, hold collections of elements  Different benefits and downsides  Implement fundamental Abstract Data Types  Sequence, Associative, String, Adaptors…  Iterators  Provide access to container elements  Used to "traverse" containers 16

17  Algorithms  Fundamental algorithms over collections or single  Hook up with iterators to access container elements  Function objects  Wrap functions/methods into objects  Implement () operator – called like functions  Called by algorithms and containers to act over elements (elements passed as parameters) 17

18 Live Demo

19 Mechanism for traversing container elements

20  "Smart" pointers to objects  Specific for each container type  Each container defines how it’s iterators work  If we have an iterator to one element  Increase/decrease it to get the other elements  Types:  Input, Output  Forward iterator, Bidirectional iterator  Random access iterator 20

21 Fast data structures to store elements

22  Store collections of other objects  Has methods to access elements  Types  By traversability:  Forward – elements ordered, Forward Iterators  Reversible – have Bidirectional iterators  Random access – have Random access iterators  By storage:  sequence, adaptors, associative 22

23 Vector, List, Deque, Queue, Stack

24  Vector ( #include )  Defined: template vector  Sequence, Random Access  Stores a sequence of elements in contiguous memory  Manages memory effectively  Fast at retrieving elements by index and adding elements at the end  Slow insertion/deletion in middle or beginning 24

25  Declaring and initializing a vector  Vector size and is obtained by calling size() #include //required header … vector numbers; numbers.push_back(42); //numbers is now {42} numbers.push_back(13); //numbers is now {42, 13} int consoleNumber; cin>>consoleNumber; numbers.push_back(consoleNumber) vector numbers; numbers.push_back(42);numbers.push_back(13); cout<<numbers.size(); //prints 2

26  Accessing vector elements  Done the same way as with arrays, i.e. []  Traversing a vector is the same as traversing an array (e.g. with a for loop)  Element access does not depend on vector size vector numbers; numbers.push_back(42);numbers.push_back(13); cout<<numbers[1]; //prints 13 cout<<endl; numbers[1] = numbers[0]; cout<<numbers[1]; //prints 42

27 Live Demo

28  List ( #include )  Defined: template list  Sequence, Reversible  Stores a sequence of elements in a doubly- linked list  Fast at deletion/insertion anywhere  No random access to elements  Have to traverse list to get to an item 28

29  Declaring and initializing a list  List size and is obtained by calling size()  List elements can be removed from front and back fast list numbers; numbers.push_back(2);numbers.push_front(1);numbers.push_back(3); numbers.pop_front();numbers.pop_back();

30  Accessing list elements  front and back methods provide first and last element access  Only way to get access to all elements – traversal by iterator cout<<numbers.front();cout<<numbers.back(); list ::iterator numbersIterator; for(numbersIterator = numbers.begin(); numbersIterator != numbers.end(); numbersIterator != numbers.end(); numbersIterator++) numbersIterator++){ cout<<*numbersIterator<<endl; cout<<*numbersIterator<<endl;}

31 Live Demo

32  Queue ( #include )  Defined: template queue  Sequence Adaptor  First in, First out structure (FIFO)  Stores a sequence of elements  Provides access only to first element  Can remove only at front  Can add only at back 32

33  Declaring and initializing a queue  Queue size is obtained by calling size()  Queues allow removing elements only from the front of the sequence queue q; q.push(1);q.push(2);q.push(3); q.pop();

34  Accessing queue elements  front and back methods provide first and last element access  Other types of access to queue elements are meaningless  The idea of the queue is to restrict access and be FIFO cout<<q.front();cout<<q.back();

35 Live Demo

36  Stack ( #include )  Defined: template stack  Sequence adaptor  Last in, First out structure (LIFO)  Stores a sequence of elements  Provides access only to last element  Can remove or add elements only at back/top 36

37  Declaring and initializing a stack  Stack size is obtained by calling size()  Stacks allow removing elements only from the back (top) of the sequence stack s; s.push(1);s.push(2);s.push(3); s.pop();

38  Accessing stack elements  top method provides first element access  Other types of access to stack elements are meaningless  The idea of the stack is to restrict access and be LIFO cout<<s.top();

39 Live Demo

40 форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране http://algoacademy.telerik.com

41 41 1. …


Download ppt "What are ADTs, STL Intro, vector, list, queue, stack Learning & Development Team Telerik Software Academy."

Similar presentations


Ads by Google