Вы находитесь на странице: 1из 35

Chapter 1

Basic Concepts

Objectives

Use pseudocode in the development of algorithms


Understand the need for Abstract Data Type (ADT)
Understand the implementation of ADTs
Use void pointers and pointer to functions
Understand the role of Big-O notation

Data Structures: A Pseudocode Approach with C, Second Edition 1


Pseudocode

Pseudocode is an English-like representation of the algorithm logic. It


consists of an extended version of the basic algorithmic constructs:
sequence, selection, and iteration.
Algorithm Header
Purpose, Condition, and Return
Statement Numbers
Variables
Statment Constructs
Algorithm Analysis

Data Structures: A Pseudocode Approach with C, Second Edition 2


Data Structures: A Pseudocode Approach with C, Second Edition 3
Data Structures: A Pseudocode Approach with C, Second Edition 4
The Abstract Data Type

An ADT consists of a data declaration packaged


together with the operations that are meaningful
on the data while embodying the structured
principles of encapsulation and data hiding. In this section
we define the basic parts of an ADT.

Atomic and Composite Data


Data Type
Data Structure
Abstract Data Type

Data Structures: A Pseudocode Approach with C, Second Edition 5


Data Structures: A Pseudocode Approach with C, Second Edition 6
Data Structure
Aggregation of atomic and composite data into a set with defined
relationships. Structure refers to a set of rules that hold the data
together.
A combination of elements in which each is either a data type or another
data structure.
A set of associations of relationship involving combined elements.
Example:

Data Structures: A Pseudocode Approach with C, Second Edition 7


Data Structures: A Pseudocode Approach with C, Second Edition 8
Abstract Data Type
ADT users are NOT concerned with how the task is done but rather what it
can do.

An abstract data type is a data declaration packaged together with the


operations that are meaningful for the data type.

We encapsulate the data and the operations on the data, and then hide
them from the user.

All references to and manipulation of the data in a data structure are


handled through defined interfaces to the structure.

Data Structures: A Pseudocode Approach with C, Second Edition 9


Model for an Abstract Data Type

In this section we provide a conceptual


model for an Abstract Data Type (ADT).

ADT Operation passage like


ADT Data Structure controlled
entirely

Data Structures: A Pseudocode Approach with C, Second Edition 10


Data Structures: A Pseudocode Approach with C, Second Edition 11
ADT Implementations

There are two basic structures we can use to


implement an ADT list: arrays and linked lists.
In this section we discuss the basic
linked-list implementation.
Array Implementation
Linked List Implemenation

Data Structures: A Pseudocode Approach with C, Second Edition 12


Data Structures: A Pseudocode Approach with C, Second Edition 13
Data Structures: A Pseudocode Approach with C, Second Edition 14
Data Structures: A Pseudocode Approach with C, Second Edition 15
Generic Code for ADT

In this section we discuss and provide examples


of two C tools that are required to implement
an ADT.
Pointer to Void
Pointer to Function

Data Structures: A Pseudocode Approach with C, Second Edition 16


Data Structures: A Pseudocode Approach with C, Second Edition 17
Data Structures: A Pseudocode Approach with C, Second Edition 18
Data Structures: A Pseudocode Approach with C, Second Edition 19
Data Structures: A Pseudocode Approach with C, Second Edition 20
(Continued)

Data Structures: A Pseudocode Approach with C, Second Edition 21


Data Structures: A Pseudocode Approach with C, Second Edition 22
Data Structures: A Pseudocode Approach with C, Second Edition 23
Data Structures: A Pseudocode Approach with C, Second Edition 24
Data Structures: A Pseudocode Approach with C, Second Edition 25
(Continued)

Data Structures: A Pseudocode Approach with C, Second Edition 26


Data Structures: A Pseudocode Approach with C, Second Edition 27
Data Structures: A Pseudocode Approach with C, Second Edition 28
Data Structures: A Pseudocode Approach with C, Second Edition 29
Data Structures: A Pseudocode Approach with C, Second Edition 30
Data Structures: A Pseudocode Approach with C, Second Edition 31
Data Structures: A Pseudocode Approach with C, Second Edition 32
Data Structures: A Pseudocode Approach with C, Second Edition 33
Data Structures: A Pseudocode Approach with C, Second Edition 34
Algorithm Efficiency
To design and implement algorithms, programmers
must have a basic understanding of what constitutes
good, efficient algorithms.

Linear Loops
-Efficiency is a function of the number of intstructions.
- Loop update either adds or subtracts.
Logarithmic Loops
-The controlling variable is either multiplied or divided in each iteration.
- The number of iteration is a function of the multiplier or divisor.
Nested Loops
- The number of iterations is the total number which is the product of the number of
iterations in the inner loop and number of iterations in the outer loop.
Big-O Notation
-Not concerned with exact measurement of efficiency but with the magnitude.
- A dominant factor determines the magnitute.

Data Structures: A Pseudocode Approach with C, Second Edition 35

Вам также может понравиться