24
Data Structures and Algorithms Lec-1 CSC 391

Data Structure Basics

Embed Size (px)

DESCRIPTION

CSC-391 course material. Data structure and algorithm basic.

Citation preview

Page 1: Data Structure Basics

Data Structures

and Algorithms

Lec-1

CSC 391

Page 2: Data Structure Basics

2

Data Structures and Algorithms

Data Structure

©SMT, Faculty, CSE, IUBAT

In computer science, a data structure is a particular way of storing and

organizing data in a computer’s memory so that it can be used

efficiently. Data may be organized in many different ways.

The logical or mathematical model of a particular organization

of data is called a data structure.

Page 3: Data Structure Basics

3

Data Structures and Algorithms

Types

Categories of Data Structure:

The data structure can be classified in to major types:

• Linear Data Structure

• Non-linear Data Structure

1. Linear Data Structure:

A data structure is said to be linear if its elements form any sequence. There

are basically two ways of representing such linear structure in memory.

a) One way is to have the linear relationships between the elements

represented by means of sequential memory location. These linear

structures are called arrays.

b) The other way is to have the linear relationship between the

elements represented by means of pointers or links. These linear structures

are called linked lists.

©SMT, Faculty, CSE, IUBAT

Page 4: Data Structure Basics

4

Data Structures and Algorithms

The common examples of linear data structure are- Arrays, Queues, Stacks,

Linked lists

2. Non-linear Data Structure:

This structure is mainly used to represent data containing a hierarchical

relationship between elements.

e.g. graphs, family trees and table of contents.

Types

©SMT, Faculty, CSE, IUBAT

Page 5: Data Structure Basics

5

Data Structures and Algorithms

Memory Allocation

©SMT, Faculty, CSE, IUBAT

Memory allocation can be classified as either

Contiguous

Linked

Indexed

Prototypical examples:

Contiguous allocation: arrays

Linked allocation: linked lists

Page 6: Data Structure Basics

6

Data Structures and Algorithms

Contiguous Allocation

©SMT, Faculty, CSE, IUBAT

An array stores n objects in a single contiguous space of memory

Unfortunately, if more memory is required, a request for new

memory usually requires copying all information into the new

memory

In general, you cannot request for the operating

system to allocate to you the next n memory

locations

Page 7: Data Structure Basics

7

Data Structures and Algorithms

Linked Allocation

©SMT, Faculty, CSE, IUBAT

Linked storage such as a linked list associates two pieces of data

with each item being stored:

The object itself, and

A reference to the next item

In C++ that reference is the address of the next node

Page 8: Data Structure Basics

8

Data Structures and Algorithms

Linked Allocation

©SMT, Faculty, CSE, IUBAT

This is a class describing such a node

template <typename Type>

class Node {

private:

Type element;

Node *next_node;

public:

// ...

};

Page 9: Data Structure Basics

9

Data Structures and Algorithms

Linked Allocation

©SMT, Faculty, CSE, IUBAT

The operations on this node must include:

Constructing a new node

Accessing (retrieving) the value

Accessing the next pointer

Node( const Type& = Type(), Node* = nullptr );

Type retrieve() const;

Node *next() const; Pointing to nothing has been represented

as:

C NULLJava/C# nullC++ (old) 0C++ (new) nullptrSymbolically Ø

Page 10: Data Structure Basics

10

Data Structures and Algorithms

Linked Allocation

©SMT, Faculty, CSE, IUBAT

For a linked list, however, we also require an object which links to

the first object

The actual linked list class must store two pointers

A head and tail:

Node *head;

Node *tail;

Optionally, we can also keep a count

int count;

The next_node of the last node is assigned nullptr

Page 11: Data Structure Basics

11

Data Structures and Algorithms

Linked Allocation

©SMT, Faculty, CSE, IUBAT

The class structure would be:

template <typename Type>

class List {

private:

Node<Type> *head;

Node<Type> *tail;

int count;

public:

// constructor(s)...

// accessor(s)...

// mutator(s)...

};

Page 12: Data Structure Basics

12

Data Structures and Algorithms

Indexed Allocation

©SMT, Faculty, CSE, IUBAT

With indexed allocation, an array of pointers(possibly NULL) link to a sequence of allocatedmemory locations

Used in the C++ standard template library

Computer engineering students will see indexedallocation in their operating systems course

Page 13: Data Structure Basics

13

Data Structures and Algorithms

Indexed Allocation

©SMT, Faculty, CSE, IUBAT

Matrices can be implemented using indexed

allocation:

1 2 3

4 5 6

Page 14: Data Structure Basics

14

Data Structures and Algorithms

Indexed Allocation

©SMT, Faculty, CSE, IUBAT

Matrices can be implemented using indexed allocation

Most implementations of matrices (or higher-dimensional arrays)

use indices pointing into a single contiguous block of memory

Row-major order Column-major order

C, Python Matlab, Fortran

1 2 3

4 5 6

Page 15: Data Structure Basics

15

Data Structures and Algorithms

Data Structure Formats

©SMT, Faculty, CSE, IUBAT

We will look at some variations or hybrids of these memory

allocations including:

Trees

Graphs

Array

Linked List

Stack

Queue

Page 16: Data Structure Basics

16

Data Structures and Algorithms

Trees

©SMT, Faculty, CSE, IUBAT

The linked list can be used to store linearly ordered data

What if we have multiple next pointers?

A rooted tree (weeks 4-6) is similar

to a linked list but with multiple next

pointers

Page 17: Data Structure Basics

17

Data Structures and Algorithms

Trees

©SMT, Faculty, CSE, IUBAT

Data frequently contain a hierarchical relationship between various elements.

The data structure which reflects this relationship is called a rooted tree graph

or, simply, a tree.

A tree is a variation on a linked list:

Each node points to an arbitrary number of subsequent nodes

Useful for storing hierarchical data

2.2.2.2

Page 18: Data Structure Basics

18

Data Structures and Algorithms

Graphs

©SMT, Faculty, CSE, IUBAT

Suppose we allow arbitrary relations between any two objects in a

container

Given n objects, there are n2 – n possible relations

If we allow symmetry, this reduces to

For example, consider the network

2

2

n n

2.2.2.2

Data sometimes contains a relationship between pairs of

elements which is not necessarily hierarchical in nature, e.g. an

airline flights only between the cities

connected by lines. This data structure is called Graph.

Page 19: Data Structure Basics

19

Data Structures and Algorithms

Arrays

©SMT, Faculty, CSE, IUBAT

2.2.2.2

The simplest type of data structure is a linear (or one dimensional)

array. A list of a finite number n of similar data referenced respectively

by a set of n consecutive numbers, usually 1, 2, 3 . . . . . . . n. if we choose

the name A for the array, then the elements of A are denoted by subscript

notation A 1 , A 2 , A 3 . . . . A n

or by the parenthesis notation A (1), A (2), A (3) . . . . . . A (n)

or by the bracket notation A [1], A [2], A [3] . . . . . . A [n]

Example:

A linear array A[8] consisting of numbers is pictured in following figure

Page 20: Data Structure Basics

20

Data Structures and Algorithms

Linked List

©SMT, Faculty, CSE, IUBAT

A linked list, or one way list is a linear collection of data elements, called nodes, where the linear order is given by means of pointers. Each node is divided into two parts:

The first part contains the information of the element/node

The second part contains the address of the next node (link /next pointer field) in the list.

There is a special pointer Start/List contains the address of first node in the list. If this special pointer contains null, means that List is empty.

Page 21: Data Structure Basics

21

Data Structures and Algorithms

Array of Linked Lists

©SMT, Faculty, CSE, IUBAT

Suppose we allow arbitrary

relations between any two

objects in a container

Alternatively, we could use

a hybrid: an array of

linked lists

A

B

C

D

E

F

G

H

I

J

K

L

2.2.2.2

Page 22: Data Structure Basics

22

Data Structures and Algorithms

Queue and Stack

©SMT, Faculty, CSE, IUBAT

Queue:

A queue, also called FIFO system, is a linear list in which deletions can take

place only at one end of the list, the Font of the list and insertion can take

place only at the other end Rear.

Stack:

It is an ordered group of homogeneous items of elements. Elements are added

to and removed from the top of the stack (the most recently added items are

at the top of the stack). The last element to be added is the first to be

removed (LIFO: Last In, First Out).

Page 23: Data Structure Basics

23

Data Structures and Algorithms

Data Structures Operations

©SMT, Faculty, CSE, IUBAT

The data appearing in our data structures are processed by means of certain

operations. In fact, the particular data structure that one chooses for a

given situation depends largely in the frequency with which specific

operations are performed.

The following four operations play a major role in this text:

Traversing: accessing each record/node exactly once so that certain items

in the record may be processed. (This accessing and processing is

sometimes called “visiting” the record.)

Page 24: Data Structure Basics

24

Data Structures and Algorithms

Data Structures Operations

©SMT, Faculty, CSE, IUBAT

Searching: Finding the location of the desired node with a given key

value,

or finding the locations of all such nodes which satisfy one or more conditions.

Inserting: Adding a new node/record to the structure.

Deleting: Removing a node/record from the structure.