cs 233 data structures
DESCRIPTION
CS 233 Data Structures. CSE, POSTECH. What The Course Is About?. The computer program development process requires us to represent data in an effective way develop a suitable step-by-step procedure ( algorithm ), which can be implemented as a computer program - PowerPoint PPT PresentationTRANSCRIPT
1
CS 233Data Structures
CSE, POSTECH
2
What The Course Is About? The computer program development process
requires us to– represent data in an effective way– develop a suitable step-by-step procedure (algorithm),
which can be implemented as a computer program Effective data representation ⇒ data structures Development of a suitable step-by-step procedure ⇒ algorithm design methods
The study of data structures and algorithms is fundamental to computer science.
3
Prerequisites CS101 & CS103 C or C++ programming
– Those who did not learn C++ are strongly recommended to get a C++ book (e.g., Richard Johnsonbaugh and Martin Kallin, "Object-Oriented Programming in C++," 2nd Edition, Prentice Hall, 2000) and study!
Logical and analytical thinking
4
Course Homepage http://dpnm.postech.ac.kr/cs233 Announcements, handouts, syllabus, assignments, useful
links, TA info., etc. POVIS eClass
5
Questions? Questions related to lectures, concepts, data structures,
algorithms, exams…– Use CS 233 BBS in POVIS
Questions related to assignments, systems, compilers, C++ programs and syntax….
– Ask the TA
6
Organization of the Textbook Three parts Part 1 : Chapters 1-4, Background Part 2 : Chapters 5-16, Data Structures Part 3 : Chapters 17-21, Algorithm Design Methods Each chapter : Concepts + Applications
Note: This course will focus mainly on Parts 1 & 2 and introduce briefly on part 3
7
Evaluation1. Assignments - 30% 2. Midterm Exam - 30% 3. Final Exam - 35% 4. Class Participation - 5%
Note: the above evaluation scheme may change slightly during the course
8
Class Schedule: 1st halfWeek 1 : Overview of C++, Program performance Week 2 : Performance MeasurementWeek 3 : Array-based and linked representations Week 3 : Week 4 : Arrays and matricesWeek 5 : StacksWeek 6 : QueuesWeek 7 : Skip lists and hashingWeek 8 : Review and Midterm Exam
9
Class Schedule: 2nd halfWeek 9 : Binary and other treesWeek 10 : Priority queues, heaps, and leftist treesWeek 11 : Tournament trees and bin packingWeek 12 : Binary Search treesWeek 13 : AVL treesWeek 14 : GraphsWeek 15 : Graph Search MethodsWeek 16 : Review and Final exam
10
Lecture 1: Programming in C++ Introduction “A better C” Support for data abstraction Support for object-oriented programming
11
Introduction C++ programming language is designed to
– Be a better C ⇒better support for procedural and modular programming
– Support data abstraction ⇒ability to define and use new data types (classes)
– Support object-oriented programming ⇒ability to express type hierarchies
12
A Better C Program and Output
#include <iostream.h>int main(){
cout << “Hello, World!\n”;}
13
A Better C Variables and Arithmetic
double d;int i;short s;// ..useful comments
d = d+i;i = s*i;
14
A Better C Pointers and Arrays
char v[10]; // array of 10 characterschar* p; // pointer to characterp = &v[3]; // p points to v’s fourth element
15
A Better C Tests and Loops
char ch = 0;cin >> ch;if (ch == ‘i’) { /* … */ }else if (ch == ‘c’) { /* … */ }
else { /* … */ }
int v1[10];int v2[10];// …for (int i = 0; i < 10; i++)
v1[i] = v2[i];
16
A Better C
Functions
int pow(int, int);double pow(double, double);//…x = pow(2,10);y = pow(2.0, 10.0);
17
A Better C Functions (swap)template<class T>void Swap1(T *a, T *b){T temp = *a; *a = *b; *b = temp;}
template<class T>void Swap2(T& a, T& b){T temp = a; a = b; b = temp;}
template<class T> void Swap3(T a, T b){T temp = a; a = b; b = temp;}
What would be the output for the following calls?
int a = 2, b = 3; Swap1(&a, &b); cout << a << ' ' << b << endl; 3 2 Swap2(a, b); cout << a << ' ' << b << endl; 2 3
Swap3(a, b); cout << a << ' ' << b << endl; 2 3
18
A Better C Modules
#include <math.h>#include “math1.h”
extern “C” double sqrt(double);extern void f();int main(){
cout << sqrt(4) << endl;cout << f() << endl;
}
%g++ main.C f.C –o silly
19
Support for Data Abstraction Initialization and Cleanup
class vector {int sz; // number of elementsint *v; // pointer to integers
public:vector(int); // constructor~vector(); // destructorint& operator[](int index);
};
20
Support for Data Abstraction Initialization and Cleanup
vector::vector(int s){
if (s <= 0) error(“bad vector size”);sz = s;v = new int[s]; // allocate an array of s integers
}vector::~vector(){
delete[] v; // deallocate the array // pointed to by v
}
21
Support for Data Abstraction Assignment and Initialization
class vector {int sz;int *v;
public:// …vector(const vector&); // initializationvoid operator=(const vector&); // assignment
};
22
Support for Data Abstraction Assignment and Initialization
void vector::operator=(const vector& a){
if (sz != a.sz) error(“bad vector size for =”);for (int i = 0; i < sz; i++) v[i] = a.v[i];
}
vector::vector(const vector& a){
sz = a.sz; // same sizev = new int[sz];for (int i = 0; i < sz; i++) v[i]= a.v[i];
}
23
Support for Data Abstraction Templates
template<class T> class Vector { // vector of Tsint sz;T* v;
public:Vector(int s) { if (s <= 0) error(“bad Vector size”); v = new T[sz=s]; // allocate an array of s Ts
}T& operator[](int i);int size() { return sz; }// …
}
24
Support for Data Abstraction Templates
void f(){
Vector<int> v1(100); // vector of 100 integersVector<complex> v2(200); // vector of 200 complex
// numbers
v2[i] = complex(v1[x], v1[y]);// …
}
25
Support for Data Abstraction Exception Handling
try {int **x = new int* [10];for (int i = 0; i < 10; i++)
x[i]= new int [5];return true;
} catch (xalloc) {return false;
}
26
Support for Object-Oriented Programming
Inheritance– Superclass (or base class) and subclass (derived
class)– inherits attributes and functions of base class
class my_task : public task {// my stuff
};class my_displayed : public displayed {
// my stuff};class my_displayed_task : public displayed, public task {
// my stuff};
27
Access Control1. Public: can access from other class functions2. Private: can only be accessed from within the class
member functions3. Friend: can be accessed by other classes or functions 4. Protected: behave like private members except that
derived classes can access protected members
Note that all source codes in the textbook can be found in http://www.cise.ufl.edu/~sahni/dsaac/
READING: Chapter 1
Support for Object-Oriented Programming