1Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
1. FUNDAMENTAL CONCEPTS
2Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Objectives Understand the well-defined, clear, and simple
approach of program design Learn fundamental aspects of algorithm and
its characteristics Learn basic concepts such as data, data type,
data object, data structure, etc. Know the power of Abstract Data Type (ADT) Study about Software Development Life
Cycle (SDLC)
3Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Introduction To Programming
Program Data
Computer
Output
Fig 1: Processing a Program
4Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Computer Languages can be classified into the following
3 basic categories
Machine Language Assembly Language High-level Language
5Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Object-Oriented Programming
OOP is used to model the real world through objects
Object-oriented decomposition views software as a set of well-defined objects that model entities in the application domain
These objects interact with each other to form a software system
6Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Introduction To Data Structures
Data Data Type Data Object Data structure Abstract Data Types (ADT)
7Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Data Data is nothing but a piece of information Data input, data manipulation (or data processing)
and data output are the themes of computer The address of the ith element is calculated by the
following formula
Atomic Data Composite Data
8Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Data Type Data type is a term that specifies the type of
data that a variable may hold in the programming language
Built-in Data TypesUser Defined Data Types
9Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Data Object A Data Object represents a container for data
values a place where data values
may be stored and later retrieved Data Object is runtime instance of data
structure
10Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Data Structure
A combination of elements each of which is either a data type or another data structure and
A set of associations or relationships (structures) involving the combined elements
A data structure is a set of domains D, a designated domain d Î D, a set of function F, and a set of axioms A
The triple (D, F, A) denotes the data structure d and it will usually be written as d
A Data Structure is
11Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Data Object An Abstract Data Type is a data declaration
packaged together with the operations that are meaningful for the data type
Abstract Data Type includes declaration of data, implementation of operations, and encapsulation of data and operations
12Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Types Of Data Structures
Primitive and Non-Primitive Data Structures
Linear and Non-linear Data Structures Static and Dynamic Persistent and Ephemeral Data Structures Sequential Access and Direct Access Data
Structures
13Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Linear Data Structure
A Data Structure is said to be linear if its elements form a sequence or a linear list
Linear Data Structure, every data element has unique successor and unique predecessor
14Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Non Linear Data Structure In non-linear data structures, every data
element may have more than one predecessor as well as successor
Elements do not form any particular linear sequence
15Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Introduction to Algorithms Characteristics of Algorithm Algorithmic Design Tools Pseudo Code Flow chart
16Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Algorithms The step-by-step solution is called an Algorithm Algorithm is independent of computer system and
programming language The real world performance of any software depends on two
things The algorithm chosen, and The suitability and efficiency of various layers of
implementation
17Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Characteristics of Algorithms
Input Output Unambiguous Steps Finiteness Effectiveness
18Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Algorithmic includes- How to devise algorithms How to validate algorithms How to analyze algorithms
19Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Pseudo Code Pseudo code Notations Algorithm Header Purpose Conditions and Return Statement Statement Numbers Variables Statement Constructs Sub Algorithms
20Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Statement Construct
Sequence Decision Repetition
21Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Figure 2: Sequence construct
22Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Figure 3: Decision Construct
If a condition is true,
Then
Else
AlgorithmPurpose :Comparing two numbersPre: NonePost: NoneReturn: None1) Read two numbers Num1 and Num22) If Num1 > Num2a. Then Print Num1b. Else Print Num23) Stop
Series of Actions
Series of Actions
Example
23Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Figure 3: Decision Construct
If a condition is true,
ThenAlgorithmPurpose :Comparing two numbersPre: NonePost: NoneReturn: None1) Read two numbers Num1 and Num22) If Num1 > Num2a. Then Print Num1b. Else Print Num23) Stop
Series of Actions
Series of Actions
Example
24Data Structures in C++ by Dr. Varsha Patil Oxford University Press © 2012
Figure 4: Repetition Construct
25Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Relationship between Data, Data Structures, and Algorithms
A data structure represents a set of data items with a specific relationship between them.
The success of a software project often depends upon the choices made in the representation of data and algorithms designed to process the data
The proper choice of a data structure can be a key point in the design of many algorithms
26Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Implementation of Data Structure
Specification Implementation
27Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Flow Chart
A very effective tool to show the logic flow of a program
A flow chart is a pictorial representation of an algorithm.
It hides all of the details of an algorithm by giving the picture;
It shows how the algorithm flows from beginning to end
28Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Structure
Figure 5: Flow chart for adding three numbers
29Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Analysis of Algorithms
Complexity of Algorithms Space Complexity Time Complexity Computing Time Complexity of Algorithm Big-O Notation
30Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Space Complexity
Amount of computer memory required during the program execution, as a function of the input size
Space complexity measurement which is space requirement of an algorithm can be done at two different times:
Compile time and Execution time
31Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Compile Time Space Complexity
Compile Time Space Complexity is defined as the storage requirement of a program at compile time
Space Complexity = Space needed of compile time
32Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Runtime space complexity
If program is recursive or uses dynamic variables or dynamic data structure then there is a need to determine space complexity at runtime
The memory requirement is summation of the Program Space Data Space And Stack Space
33Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Time Complexity
Time Complexity of an algorithm is a measure of how much time is required to execute an algorithm for a given number of inputs
Time Complexity T(P) is the time taken by program P and the sum of the compile and execution time
34Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Worst Case Complexity of the algorithm is the function defined by the maximum number of steps taken on any instance of size n
Best CaseComplexity of the algorithm is the function defined by the minimum number of steps taken on any instance of size n
Average CaseComplexity of the algorithm is the function defined by an average number of steps taken on any instance of size n
Best, Worst and Average Cases
35Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Computing Time Complexity of
Algorithm
The total time taken by the algorithm or program is calculated using the sum of the time taken by each of executable statement in algorithm or program
Time required by each statement depends on Time required for executing it once Number of times the statement is
executed
36Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Software Engineering Software Engineering is the establishment
and use of sound engineering methods and principles to obtain reliable software
that works on real machines A fundamental concept in Software
Engineering is the Software Development Life Cycle (SDLC)
37Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Software Engineering
Analysis Phase Design Phase Implementation Phase Testing Phase Verification
38Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Figure 6: System Development Phases
Software Engineering
39Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Analysis Phase Define the User Define the Needs Define the Requirements Define the Methods
40Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Design Phase Modularity The design phase uses a
very well-established principle called Modularity
The whole package is divided into small modules
41Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Implementation PhaseTools Flowchart Pseudo Code Coding
42Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Testing Phase
Testing Phase Once the programs have been written, they
must be tested. There are two types of testing:
Black Box White Box
43Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Verification Program verification is a process to prove
that the program does what it is intended to do
It is said that 'even verification must be verified'
This means, along with system, tests made are to be verified
Also, every software quality must be verified
44Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
KEY TERMS DATA DATA TYPE DATA OBJECT DATA STRUCTURE ABSTRACT DATA TYPE LINEAR DATA STRUCUTRE NON LINEAR DATA STRUCTURE ALGORITHM ASSEMBLER COMPILER PROGRAM PSEUDOCODE FLOWCHART SOFTWARE ENGINEERING
45Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Summary Computer is a programmable data processing machine that accepts input;
instructions to process input (program) and generates required output. Data and program are stored in computer’s memory. A program is written in computer’s language.
The art of programming consists of designing or choosing algorithms and expressing them in a programming language. An algorithm is a stepwise description of action which leads the problem from its start state to its goal state
One of the common tools used to define algorithms is pseudo code. Pseudo code is an English-like representation of the code required for an algorithm. It is part of English, part structured code
A very effective tool to show the logic flow of a program is the flow chart. A flow chart is a pictorial representation of an algorithm. It hides all of the details of an algorithm by giving the picture; it shows how the algorithm flows from beginning to end
Program verification is a process to prove that the program does what it is intended to do
46Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Summary Engineering is the establishment and use of sound
engineering methods and principles to obtain reliable software that works on real machines
A data structure represents a set of data items with a specific relationship between them. The success of a software project often depends upon the choices made in the representation of data and algorithms designed to process the data. The proper choice of a data structure can be a key point in the design of many algorithms
47Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Summary The various types Software Engineering is the
establishment and use of sound engineering methodologies and the principle to writing reliable of data structures are:
Primitive and Non-primitive data structures Linear and Non-linear data structures Static and Dynamic data structures Persistent and Ephemeral data structures Sequential and Direct access data structures
48Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
Summary There is an intimate relationship between the structuring of data,
and analysis of algorithms. In fact, a data structure and an algorithm should be thought of as a one single unit, neither one along making sense without the other. · Algorithms heavily depend on the organization of data
There can be several organizations of data and/or algorithms for a given problem. Difficulty lies in deciding which algorithms is the best. We can compare one algorithm with other and choose the best. For comparison we need to analyze algorithms. Analysis involves measuring the performance of an algorithm in terms of time and space complexity
49Oxford University Press © 2012
Data Structures Using C++ by Dr Varsha Patil
End of Chapter 1 …!