-TAs and office hours announced

Slides:



Advertisements
Similar presentations
Linear Lists – Array Representation
Advertisements

Linked Lists Linear collections.
ArrayLists The lazy mans array. Whats the matter here? int[] list = new int[10]; list[0] = 5; list[2] = hey; list[3] = 15; list[4] = 23;
Queues CSE, POSTECH 2 2 Queues Like a stack, special kind of linear list One end is called front Other end is called rear Additions (insertions or enqueue)
List Representation - Chain Fall 2010 CSE, POSTECH.
LISTS & TREES Lecture 8 CS2110 – Fall List Overview 2  Purpose  Maintain an ordered set of elements (with possible duplication)  Common operations.
CSE 143 Lecture 22: Advanced List Implementation (ADTs; interfaces; abstract classes; inner classes; generics; iterators)
The Template Class Chain Chain Linear list. Each element is stored in a node. Nodes are linked together using pointers.
Abstract Data Types data object set or collection of instances integer = {0, +1, -1, +2, -2, +3, -3, …} daysOfWeek = {S,M,T,W,Th,F,Sa}
Stacks  Standard operations: IsEmpty … return true iff stack is empty Top … return top element of stack Push … add an element to the top of the stack.
CS 106 Introduction to Computer Science I 04 / 30 / 2010 Instructor: Michael Eckmann.
Data Structures data object set or collection of instances integer = {0, +1, -1, +2, -2, +3, -3, …} daysOfWeek = {S,M,T,W,Th,F,Sa}
Stacks CSE, POSTECH. 2 2 Stacks Linear list One end is called top. Other end is called bottom. Additions to and removals from the top end only.
Stacks Linear list. One end is called top. Other end is called bottom. Additions to and removals from the top end only.
Iterators & Chain Variants. Iterators  An iterator permits you to examine the elements of a data structure one at a time.  C++ iterators Forward iterator.
Arrays and Linked Lists "All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101,
Data Collections: Dictionaries CSC 161: The Art of Programming Prof. Henry Kautz 11/4/2009.
Lecture DS & Algorithms:09 Abstract Data Types. Lecture DS & Algorithms:09 2 Abstract Data Types Data Type: A data type is a collection of values and.
Main Index Contents 11 Main Index Contents Week 3 – The Vector Container.
LISTS Slides of K. Birman, Cornell University. List Overview 2  Purpose  Maintain an ordered collection of elements (with possible duplication)  Common.
ArrayList Class An ArrayList is an object that contains a sequence of elements that are ordered by position. An ArrayList is an object that contains a.
SNU IDB Lab. Ch5. Linear Lists – Array Representation © copyright 2006 SNU IDB Lab.
Stacks Chapter 8. Objectives In this chapter, you will: Learn about stacks Examine various stack operations Learn how to implement a stack as an array.
CSE 143 Lecture 24 Advanced collection classes (ADTs; abstract classes; inner classes; generics; iterators) read 11.1, 9.6, , slides.
Chapter 5 Array-Based Structures © 2006 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.
Linear List Array representation Data structures A data structure is a particular way of storing and manipulating data in a computer so that it can be.
Abstract Data Types and a review of C++ programming concepts CS 400/600 – Data Structures.
ITERATORS. Iterator An iterator in C++ is a concept that refines the iterator design pattern into a specific set of behaviors that work well with the.
The Class Chain. next (datatype ChainNode) element (datatype Object) Use ChainNode abcde null firstNode size = number of elements.
Side effects A side effect is anything that happens in a method other than computing and/or returning a value. Example: public class hello { public int.
Chapter 5 Array-Based Structures © 2006 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.
Data Structure Specification  Language independent  Abstract Data Type  C++  Abstract Class.
IMPLEMENTING ARRAYLIST COMP 103. RECAP  Comparator and Comparable  Brief look at Exceptions TODAY  Abstract Classes - but note that the details are.
This In Java, the keyword this allows an object to refer to itself. Or, in other words, this refers to the current object – the object whose method or.
1 The copy constructor in the BankAccounts class. Two alternatives here: /** copy constructor */ public BankAccounts(BankAccounts L){ theAccounts = L.theAccounts.clone();
Windows Programming Lecture 03. Pointers and Arrays.
TAs Fardad Jalili: Aisharjya Sarkar: Soham Das:
Linear (or Ordered) Lists instances are of the form (e 0, e 1, e 2, …, e n-1 ) where e i denotes a list element n >= 0 is finite list size is n.
The Class arrayList General purpose implementation of linear lists. Unknown number of lists.
Sections 3.4 Formal Specification
Reminder: Course Policy
-TAs and office hours announced
The Class ArrayLinearList
Abstract Data Types data object set or collection of instances
List Representation - Array
The Class chain.
Stacks Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
Topic 11 Linked Lists -Joel Spolsky
Stacks template<class T> class stack { public:
Associative Structures
The Class arrayList General purpose implementation of linear lists.
Programming in Java Lecture 11: ArrayList
CSE 143 Lecture 27: Advanced List Implementation
Stacks template<class T> class stack { public:
Queues Linear list. One end is called front. Other end is called rear.
Programming II (CS300) Chapter 07: Linked Lists and Iterators
Stacks template<class T> class stack { public:
Introduction to Data Structure
QUIZ.
The Class chain.
CS 240 – Lecture 7 Boolean Operations, Increment and Decrement Operators, Constant Types, enum Types, Precedence.
The Class chain.
Stacks template<class T> class stack { public:
2009 Test Key.
Lists - I The List ADT.
Trees Trees are a very useful data structure. Many different kinds of trees are used in Computer Science. We shall study just a few of these.
Arrays and ArrayLists.
The List Container and Iterators
Topic 11 Linked Lists -Joel Spolsky
Data Structures & Programming
Presentation transcript:

-TAs and office hours announced Updates -TAs and office hours announced -DRC students: can take quizzes after class (quizzes will remain open for 1 hour after class) (Please email me)

-When using git for homework and projects, make sure it’s PRIVATE Updates -When using git for homework and projects, make sure it’s PRIVATE

Data Structures data object set or collection of instances integer = {0, +1, -1, +2, -2, +3, -3, …} daysOfWeek = {S,M,T,W,Th,F,Sa} Any set or collection is a data object. Set = a collection of distinct objects

Data Object instances may or may not be related myDataObject = {apple, chair, 2, 5.2, red, green, Jack} The instances of integer and daysOfWeek are related. In the former, all instances are whole numbers, whereas in the latter all instances name days of the week. The instances of myDataObject don’t seem to be related.

Data Structure Data object + Among instances of integer 369 < 370 relationships that exist among instances and elements that comprise an instance Among instances of integer 369 < 370 280 + 4 = 284 You can have ordering relationships –2 before –1 before 0 before 1 etc (relational operators such as <, >, =, etc). Elements could be related by operations such as add, subtract, etc.

Data Structure Among elements that comprise an instance 369 3 is more significant than 6 3 is immediately to the left of 6 9 is immediately to the right of 6

add, subtract, predecessor, multiply Data Structure The relationships are usually specified by specifying operations on one or more instances. add, subtract, predecessor, multiply

Linear (or Ordered) Lists An abstract data type (implementation varies) instances are of the form (e0, e1, e2, …, en-1) where ei denotes a list element n >= 0 is finite list size is n Set {e0, e1, e2} is the same as Set {e1, e0, e2} but Linear List (e0, e1, e2) is different from Linear List (e1, e0, e2)

Linear Lists L = (e0, e1, e2, e3, …, en-1) relationships e0 is the zero’th (or front) element en-1 is the last element ei immediately precedes ei+1 A data object is a set of instances; an instance of a linear list is an ordered set of elements.

Linear List Examples/Instances Students in COP3530 = (Jack, Jill, Abe, Henry, Mary, …, Judy) Exams in COP3530 = (exam1, exam2, exam3) Days of Week = (S, M, T, W, Th, F, Sa) Months = (Jan, Feb, Mar, Apr, …, Nov, Dec) Size of Students in COP3530 is 240, Exams is 3, DOW is 7, and Months is 12. Notice that Days of Week is used as an example of both a data object and of a linear list. As a data object, {S, M, T, …} and {M, W, S, …} describe the same data object with 7 allowable instances S, M, T, … As a linear list (S, M, T, …) and (M, W, S, …) are two different instances of a linear list. Linear List itself may be viewed as data object, which is simply the set of all possible linear list instances.

Linear List Operations—size() determine list size L = (a,b,c,d,e) size = 5

Linear List Operations—get(theIndex) get element with given index L = (a,b,c,d,e) get(0) = a get(2) = c get(4) = e get(-1) = error get(9) = error

Linear List Operations—indexOf(theElement) determine the index of an element L = (a,b,d,b,a) indexOf(d) = 2 indexOf(a) = 0 indexOf(z) = -1 The index of a nonexistent element is defined to be –1. When theElement is in the list an index between 0 and size()-1 is the result. So –1 would be an invalid index and is used to represent the case when theElement is not in the list

Linear List Operations—remove/erase(theIndex) Remove/delete element with given index L = (a,b,c,d,e,f,g) erase(2) removes c and L becomes (a,b,d,e,f,g) index of d,e,f, and g decrease by 1

Linear List Operations—remove/erase(theIndex) Remove/delete element with given index L = (a,b,c,d,e,f,g) remove(-1) => error remove(20) => error

Linear List Operations—insert(theIndex, theElement) add an element so that the new element has a specified index L = (a,b,c,d,e,f,g) insert(0,h) => L = (h,a,b,c,d,e,f,g) index of a,b,c,d,e,f, and g increase by 1

Linear List Operations—insert(theIndex, theElement) L = (a,b,c,d,e,f,g) insert(2,h) => L = (a,b,h,c,d,e,f,g) index of c,d,e,f, and g increase by 1 add(10,h) => error add(-6,h) => error

Data Structure Specification Language independent Abstract Data Type C++ Abstract Class

Linear List Abstract Data Type AbstractDataType LinearList { instances ordered finite collections of zero or more elements operations empty(): return true iff the list is empty, false otherwise size(): return the list size (i.e., number of elements in the list) get(index): return the indexth element of the list indexO f(x): return the index of the first occurrence of x in the list, return -1 if x is not in the list erase(index): remove the indexth element, elements with higher index have their index reduced by 1 insert(theIndex, x): insert x as the indexth element, elements with theIndex >= index have their index increased by 1 output(): output the list elements from left to right }

Linear List As An Abstract Class An abstract class may include constants, variables, abstract methods, and nonabstract methods.

Linear List As C++ Abstract Class template<class T> class linearList { public: virtual ~linearList() {}; virtual bool empty() const = 0; virtual int size() const = 0; virtual T& get(int theIndex) const = 0; virtual int indexOf(const T& theElement)const = 0; virtual void erase(int theIndex) = 0; virtual void insert(int theIndex, const T& theElement) = 0; virtual void output(ostream& out) const = 0; };

Extending A C++ Class template<class T> class arrayList : public linearList<T> { // code for all abstract methods of linearList must come here } If arrayList does not provide an implementation for all abstract methods of linearList, arrayList also is abstract and so cannot be instantiated.

To-do Git: C++: http://www.sbf5.com/~cduan/technical/git/ http://git-scm.com/book/en/v2 C++: http://www.cplusplus.com/doc/tutorial/templates/