Course Name:DATA STRUCTURES Course Code:10B11CI211 Course Credits:4 (3-1-2) Session:Jan – Jun 2013 Data Structures Team: Course Coordinator: Deepak, Nitin.

Slides:



Advertisements
Similar presentations
Pointers.
Advertisements

Stacks, Queues, and Linked Lists
Data Structure Lecture-3 Prepared by: Shipra Shukla Assistant Professor Kaziranga University.
Comp 122, Spring 2004 Binary Search Trees. btrees - 2 Comp 122, Spring 2004 Binary Trees  Recursive definition 1.An empty tree is a binary tree 2.A node.
1 abstract containers hierarchical (1 to many) graph (many to many) first ith last sequence/linear (1 to 1) set.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Data Structures.
Abstract Data Types and Subprograms
Lecture - 1 on Data Structures. Prepared by, Jesmin Akhter, Lecturer, IIT,JU Data Type and Data Structure Data type Set of possible values for variables.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
©Brooks/Cole, 2003 Chapter 12 Abstract Data Type.
Chapter 12 C Data Structures Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education Inc.
1 Data Structures Data Structures Topic #2. 2 Today’s Agenda Data Abstraction –Given what we talked about last time, we need to step through an example.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 12 – Data Structures Outline 12.1Introduction.
1 abstract containers hierarchical (1 to many) graph (many to many) first ith last sequence/linear (1 to 1) set.
Important Problem Types and Fundamental Data Structures
C o n f i d e n t i a l Developed By Nitendra NextHome Subject Name: Data Structure Using C Title: Overview of Data Structure.
Chapter 12 Data Structure Associate Prof. Yuh-Shyan Chen Dept. of Computer Science and Information Engineering National Chung-Cheng University.
Data Structures Winter What is a Data Structure? A data structure is a method of organizing data. The study of data structures is particularly important.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Custom Templatized Data Structures.
Introduction to Data Structures. Definition Data structure is representation of the logical relationship existing between individual elements of data.
 2007 Pearson Education, Inc. All rights reserved C Data Structures.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. C How To Program - 4th edition Deitels Class 05 University.
ECE 103 Engineering Programming Chapter 61 Abstract Data Types Herbert G. Mayer, PSU CS Status 6/4/2014 Initial content copied verbatim from ECE 103 material.
17. ADVANCED USES OF POINTERS. Dynamic Storage Allocation Many programs require dynamic storage allocation: the ability to allocate storage as needed.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Functions (Recursion) Outline 5.13Recursion 5.14Example.
Chapter 9 (modified) Abstract Data Types and Algorithms Nell Dale John Lewis.
Chapter 9 Abstract Data Types and Algorithms Nell Dale John Lewis.
9-1 Abstract Data Types Abstract data type A data type whose properties (data and operations) are specified independently of any particular implementation.
(1 - 1) Introduction to C Data Structures & Abstract Data Types Instructor - Andrew S. O’Fallon CptS 122 (August 26, 2015) Washington State University.
Data structures Abstract data types Java classes for Data structures and ADTs.
Chapter 1 Object Oriented Programming. OOP revolves around the concept of an objects. Objects are created using the class definition. Programming techniques.
Slide 1 Linked Data Structures. Slide 2 Learning Objectives  Nodes and Linked Lists  Creating, searching  Linked List Applications  Stacks, queues.
1 Linked-list, stack and queue. 2 Outline Abstract Data Type (ADT)‏ Linked list Stack Queue.
Algorithms and data structures Protected by
Lists Chapter 8. 2 Linked Lists As an ADT, a list is –finite sequence (possibly empty) of elements Operations commonly include: ConstructionAllocate &
Programming Practice 3 - Dynamic Data Structure
Elementary Data Organization. Outline  Data, Entity and Information  Primitive data types  Non primitive data Types  Data structure  Definition 
Chapter 16 – Data Structures and Recursion. Data Structures u Built-in –Array –struct u User developed –linked list –stack –queue –tree Lesson 16.1.
Data Structures Chapter 6. Data Structure A data structure is a representation of data and the operations allowed on that data. Examples: 1.Array 2.Record.
Data Structures. Abstract Data Type A collection of related data is known as an abstract data type (ADT) Data Structure = ADT + Collection of functions.
BINARY TREES Objectives Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms Discuss a binary.
Data Structure and Algorithms
MORE POINTERS Plus: Memory Allocation Heap versus Stack.
A Brief Introduction to Recursion. Recursion Recursive methods … –methods that call themselves! –They can only solve a base case –So, you divide a problem.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Linked Lists Outline Introduction Self-Referential Structures.
Data Structures - Prabir Sarkar. AGENDA Stack Queue Linked List Trees Graphs Searching and Sorting Algorithm.
LINKED LISTS.
List Structures What is a list? A homogeneous collection of elements with a linear relationship between the elements linear relationship - each element.
Prof. Amr Goneid, AUC1 CSCE 210 Data Structures and Algorithms Prof. Amr Goneid AUC Part R2. Elementary Data Structures.
DATA STRUCURES II CSC QUIZ 1. What is Data Structure ? 2. Mention the classifications of data structure giving example of each. 3. Briefly explain.
CPS120: Introduction to Computer Science Nell Dale John Lewis Abstract Data Types.
DYNAMIC MEMORY ALLOCATION. Disadvantages of ARRAYS MEMORY ALLOCATION OF ARRAY IS STATIC: Less resource utilization. For example: If the maximum elements.
STACKS & QUEUES for CLASS XII ( C++).
Data Structure By Amee Trivedi.
Chapter 12 – Data Structures
5.13 Recursion Recursive functions Functions that call themselves
Top 50 Data Structures Interview Questions
Lectures linked lists Chapter 6 of textbook
12 C Data Structures.
Data Structure Interview Question and Answers
12 C Data Structures.
DATA STRUCTURES AND OBJECT ORIENTED PROGRAMMING IN C++
Data Structures Interview / VIVA Questions and Answers
CSCE 210 Data Structures and Algorithms
Introduction to Data Structure
Map interface Empty() - return true if the map is empty; else return false Size() - return the number of elements in the map Find(key) - if there is an.
Chapter 5 - Functions Outline 5.1 Introduction
Review & Lab assignments
Introduction to Data Structure
(1 - 2) Introduction to C Data Structures & Abstract Data Types
Presentation transcript:

Course Name:DATA STRUCTURES Course Code:10B11CI211 Course Credits:4 (3-1-2) Session:Jan – Jun 2013 Data Structures Team: Course Coordinator: Deepak, Nitin and Hemraj

WHAT THE COURSE IS ABOUT Data structures is concerned with the representation and manipulation of data. All programs manipulate data. So, all programs represent data in some way. Data manipulation requires an algorithm. We shall study ways to represent data and algorithms to manipulate these representations. The study of data structures is fundamental to Computer Science & Engineering.

PREREQUISITE C Enumerated data type, void data type typedef statement Control statements Use of memory by a program Specification of pointers Memory management functions Problems with pointers Various aspects of user defined functions

WHAT IS DATA STRUCTURE “A Conceptual and concrete way to organize data for efficient storage and manipulation”

WHAT IS DATA STRUCTURE A data structure is a logical and mathematical model of a particular organization of data. The choice of particular data structure depends upon following consideration: 1.It must be able to represent the inherent relationship of data in the real world. 2.It must be simple enough so that it can process efficiently as and when necessary

OVERVIEW OF DATA STRUCTURE Basic Terms related to data organization Data type Meaning of data structure Factor that influence the choice of data structure Different data structure Various operation performed on data structure

BASIC TERMS RELATED TO DATA ORGANIZATION Data: Values or set of values. Eg. Observation of experiment, marks obtained by student. Data item: A data item refers to a single unit of values. Eg. Roll no. name etc. Entity: That has certain attribute or properties which may be assigned values. Eg. Student is an entity

BASIC TERMS RELATED TO DATA ORGANIZATION Entity set: Collection of similar entity. Eg. Student of a class Record: Collection of related data items. Eg. Rollno, Dob, gender, class of a particular student. File: Collection of related record. Eg. A file containing records of all students in a class

BASIC TERMS RELATED TO DATA ORGANIZATION Key: A key is a data item in a record that takes unique values and can be used to distinguish a record from other records. Information: Meaningful data, coveys some meaning and hence can be used for decision making

DATA TYPE A data type is a collection of values and a set of operation that act on those values Classification of data type: 1.Primitive data type 2.Abstract data type 3.Polymorphic data type

PRIMITIVE DATA TYPE That is predefined. It is also known as built in data type. Eg. C have built in data type int, long int, float, double, char.

ABSTRACT DATA TYPE In computing, an abstract data type (ADT) is a specification of a set of data and the set of operations that can be performed on the data. Such a data type is abstract in the sense that it is independent of various concrete implementations. The main contribution of the abstract data type theory is that it –(1) formalizes a definition of type (which was only intuitively hinted on procedural programming) –(2) on the basis of the information hiding principle and –(3) in a way that such formalization can be explicitly represented in programming language notations and semantics. This important advance in computer science theory (motivated by software engineering challenges in procedural programming) led to the emergence of languages and methodological principles of object-oriented programming.

POLYMORPHIC DATA TYPE Very often in programs, a generic operation must be performed on data of different types. For example, in our bubble sort algorithm for the payroll records, when elements were found out of order in the id[] array, we needed to swap the integer elements in that array as well as the float elements in the hrs[] and rate[] arrays. If we decided to implement this swapping operation as a function, we would need to write two functions: one to swap integers, and another to swap floating point values; even though the algorithm for swapping is the same in both cases. The C language provides a mechanism which allows us to write a single swapping function which can be used on any data type. This mechanism is called a polymorphic data type, i.e. a data type which can be transformed to any distinct data type as required..

THE STUDY OF DATA STRUCTURE INCLUDE: Logical description of data structure Implementation of data structure Quantative analysis of data structure, this include amount of memory, processing time

TYPES OF DATA STRUCTURES 1.Linear data structure 2.Non linear data structure

LINEAR DATA STRUCTURE A data structure whose elements form a sequence, and every element in the structures has a unique predecessor and unique successor. Eg. Array, linked list, stack and queues.

NON LINEAR DATA STRUCTURE A data structure whose elements do not form a sequence, and there is no predecessor and unique successor. Eg. Trees, graphs

ARRAYS Collection of homogenous data elements. Arrays can be: 1.One dimensional 2.Two dimensional 3.Multi dimensional

LINKED LIST Linked list –Linear collection of self-referential class objects, called nodes –Connected by pointer links –Accessed via a pointer to the first node of the list –Subsequent nodes are accessed via the link-pointer member of the current node –Link pointer in the last node is set to null to mark the list’s end Use a linked list instead of an array when –You have an unpredictable number of data elements –Your list needs to be sorted quickly

The Linked List data structure [0][1][2] array ABC Array linked ABC Linked list Linked lists are unbounded (maximum number of items limited only by memory) node

LINKED LIST Types of linked lists: –Singly linked list Begins with a pointer to the first node Terminates with a null pointer Only traversed in one direction –Circular, singly linked Pointer in the last node points back to the first node –Doubly linked list Two “start pointers” – first element and last element Each node has a forward pointer and a backward pointer Allows traversals both forwards and backwards –Circular, doubly linked list Forward pointer of the last node points to the first node and backward pointer of the first node points to the last node

LINKED LISTS (VARIATIONS) Basic elements: –Head –Node Simplest form: Linear-Singly-linked head A datapointer node A  Head BC

LINKED LISTS (VARIATIONS) Circular-linked Lists –The last node points to the first node of the list Strengths –Able to traverse the list starting from any point –Allow quick access to first and last records through a single pointer Weakness –A bit complicated during insertion, needs careful setting of pointer for empty or one-node list A Head BC

LINKED LISTS (VARIATIONS) Doubly-linked Lists –Each inner node points to BOTH successor and the predecessor Strengths –Able to traverse the list in any direction –Can insert or delete a node very quickly given only that node’s address Weakness –Requires extra memory and handling for additional pointers A Head B  C 

LINKED LISTS (VARIATIONS) Putting together… Circular-doubly-linked lists! A Head B C

STACK Stack –New nodes can be added and removed only at the top –Similar to a pile of dishes –Last-in, first-out (LIFO) –Bottom of stack indicated by a link member to NULL –Constrained version of a linked list push –Adds a new node to the top of the stack pop –Removes a node from the top –Stores the popped value –Returns true if pop was successful

DATA STRUCTURES -- STACKS A stack is a list in which insertion and deletion take place at the same end –This end is called top –The other end is called bottom

QUEUES Queue –Similar to a supermarket checkout line –First-in, first-out (FIFO) –Nodes are removed only from the head –Nodes are inserted only at the tail Insert and remove operations –Enqueue (insert) and dequeue (remove)

The Queue Operations A queue is like a line of people waiting for a bank teller. The queue has a front and a rear. $ Front Rear

TREES Tree nodes contain two or more links – All other data structures we have discussed only contain one Binary trees –All nodes contain two links None, one, or both of which may be NULL –The root node is the first node in a tree. –Each link in the root node refers to a child –A node with no children is called a leaf node

TREE TERMINOLOGY There is a unique path from the root to each node. Root is a level 0, child is at level(parent) + 1. Depth/height of a tree is the length of the longest path. level

BINARY TREE Each node has two successors –one called the left child –one called the right child –left child and/or right child may be empty A binary tree is either - empty or - consists of a root and two binary trees, one called the left subtree and one called the right subtree

GRAPHS G = (V, E) a vertex may have: 0 or more predecessors 0 or more successors

abstract containers hierarchical (1 to many) graph (many to many) first ith last sequence/linear (1 to 1) set

HEAPS Heap is a binary tree that satisfy the following property: Shape property Order property Shape property states that heap is complete or nearly complete binary tree. Order property states that: 1.Either the element at any node is smallest of all of its children, called min heap 2.Element at any node is largest of all of its children, called max heap.

HASH TABLES There are many application that require a dynamic structure that support only insert, search and delete operations. These operations are commonly known as dictionary operations. A hash table is an effective data structure for implementing dictionaries.

COMMON OPERATIONS ON DATA STRUCTURE 1.Traversal:-Accessing each element exactly once in order to process it. 2.Searching:-Finding the location of a given element. 3.Insertion:-Adding the new element to the structure. 4.Deletion:-Removing a existing element from the structure. 5.Sorting:-Arranging the elements in logical order. 6.Merging:-Combining the elements of two similar sorted structures into a single structure.

ENUMERATED DATA TYPE Variable of enumerated data type enhance the readability of the program. enum boolean {false, true}; Here boolean is called tag name for the user defined data type. Then we can declare variable of this type as follows: enum boolean flag; Then we can assign value false or true to variable flag, and also we can compare the value of flag with these values.

void DATA TYPE This is also known as empty data type, is useful in many situation; 1.Void functionname(int x, int y) { } Functionname() does not return any value. 2.Int functionname(void) { } Functionname() does not take any rgument. 3.Void main() { void *ptr; int x=5; ptr=&x; printf(“value pointed to pointer is now %d”,*(int*)ptr); } Void pointer cannot be directly dereferenced without type casting. This is because the compiler cannot determie the size of the value the pointer points to.

REDEFINING DATA TYPES Using typedef statement we can make it possible to declare variables of user defined data types as with built in data types by redefining the user defined data type and giving our own name. typedef enum{false, true} boolean; The word boolean becomes name of the new defined data type. boolean flag;

CONTROL STATEMENTS 1.Decision making statements if statement if-else statement switch statement 2.Looping Statements for statement while statement do while statement 3.Jumping statements brake statement continue statement goto statement

MEMORY USE IN C STACK HEAP BSS CONST DATA TEXT High Memory Low Memory Initialized and un initialized local variable Memory allocated with malloc(). Calloc(), and realloc() functions Un initialized static variable Read only variable Initialized & un initialized global variables & initialized static variables Program code

POINTER Pointer is a variable which contains reference of another variable Address of xvalue of x pxx Pointer px=&x

DECLARATION OF POINTER “*” is used to declare and dereference the pointers. data type *ptvar; int *ip; /*declare ip to be pointer to an integer*/ *ip=5; /* assign 5 to the integer pointer to which ip points*/ address5 ip

POINTER OPERATOR Two operators: &-----address of *------at address in X=8 let x be at 100 (x at 100) Ip=&x ip contains 100 (ip at 200) a=*ip contains 8 (a at 250)

ASSIGNMENT IN POINTER Given Int x; Double y; Int *a,*b; double *c; a=&x; /* a now points to x*/ b=a; /*b now points to the same variable as a points */ c=&y; /* c points to y */

POINTER TO A POINTER Variable that hold an address of a another variable that in turn holds an address of another variable, this type of variable is know as pointer to pointer. Pointer to pointer will be declared as **ptr;

DYNAMIC MEMORY MANAGEMENT Memory management functions Functio n name Description mallocAllocate memory from heap callocAllocate memory from heap and initializes the allocated memory to zeros reallocReadjusts the existing block and copies the contents to new location freeDeallocates block allocated by malloc, calloc and realloc fuctions

DYNAMIC MEMORY ALLOCATION Dynamic memory allocation –Obtain and release memory during execution malloc –Takes number of bytes to allocate Use sizeof to determine the size of an object –Returns pointer of type void * A void * pointer may be assigned to any pointer If no memory available, returns NULL –Example newPtr = malloc( sizeof( struct node ) ); free –Deallocates memory allocated by malloc –Takes a pointer as an argument –free ( newPtr );

calloc() The calloc() function dynamically allocates memory and automatically initializes the memory to zeroes. Example newPtr = calloc( 5,sizeof( struct node ) );

realloc() The realloc() function changes the size of previously dynamically allocated memory with malloc(),calloc() or realloc function() functions. The prototype of realloc() function is Void *realloc(void *block,size_t size); It takes two arguments, first argumant is pointer to the original object and second argument is new size of the object.

free() The free() function deallocates a memory block previously allocated with malloc(), calloc(), or realloc() functions. Prototype for free function is void free(void *block); It takes one argument that specify the pointer to the allocated block.

DEBUGGING POINTERS The pointer can be the source of mysterious and catastrophic program bugs. Common bugs related to related to pointer and memory management is 1.Dangling pointer 2.Null pointer assignment 3.Memory leak 4.Allocation failure

STRUCTURES A structure is a collection of data elements, called fields which may be of different type. Individual elements of a structure variable are accessed using dot operator (.), if a pointer is used to point to a structure variable, then arrow operator (->) is used.

STRUCTURE Example of complex data structures and the corresponding self referential structure to represent these data structure. Next pointer field Information field head X

STRUCTURE typedef struct nodetype{ int info; struct nodetype *next; } node; node * head;

Recursion

Divide-and-conquer

What is recursion?

Recursive functions

Nature of recursion

Types of Recursion Direct Recursion Indirect Recursion

Iteration vs. recursion

Recursion: sum()

How does recursion work?

Recursion Recursive functions –Functions that call themselves –Can only solve a base case –Divide a problem up into What it can do What it cannot do –What it cannot do resembles original problem –The function launches a new copy of itself (recursion step) to solve what it cannot do –Eventually base case gets solved Gets plugged in, works its way up and solves whole problem

Recursion Example: factorials –5! = 5 * 4 * 3 * 2 * 1 –Notice that 5! = 5 * 4! 4! = 4 * 3!... –Can compute factorials recursively –Solve base case ( 1! = 0! = 1 ) then plug in 2! = 2 * 1! = 2 * 1 = 2; 3! = 3 * 2! = 3 * 2 = 6;

Recursion

1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = ! = ! = ! =

Example Using Recursion: The Fibonacci Series Fibonacci series: 0, 1, 1, 2, 3, 5, 8... –Each number is the sum of the previous two –Can be solved recursively: fib( n ) = fib( n - 1 ) + fib( n – 2 ) –Code for the fibonacci function long fibonacci( long n ) { if (n == 0 || n == 1) // base case return n; else return fibonacci( n - 1) + fibonacci( n – 2 ); }

Example Using Recursion: The Fibonacci Series f( 3 ) f( 1 ) f( 2 ) f( 1 )f( 0 )return 1 return 0 return + +

Enter an integer: 0 Fibonacci( 0 ) = 0 Enter an integer: 1 Fibonacci( 1 ) = 1 Enter an integer: 2 Fibonacci( 2 ) = 1 Enter an integer: 3 Fibonacci( 3 ) = 2 Enter an integer: 4 Fibonacci( 4 ) = 3

Enter an integer: 5 Fibonacci( 5 ) = 5 Enter an integer: 6 Fibonacci( 6 ) = 8 Enter an integer: 10 Fibonacci( 10 ) = 55 Enter an integer: 20 Fibonacci( 20 ) = 6765 Enter an integer: 30 Fibonacci( 30 ) = Enter an integer: 35 Fibonacci( 35 ) =

Recursion vs. Iteration Repetition –Iteration: explicit loop –Recursion: repeated function calls Termination –Iteration: loop condition fails –Recursion: base case recognized Both can have infinite loops Balance –Choice between performance (iteration) and good software engineering (recursion)

GCD else { r=x%y; return (recgcd(y,r)); } Output: Enter the two number 5 8 G.C.D. of the 5 and 8 is 1

Problems on recursion Factorial Fibonacci number generation Fibonacci series generation Reversing an integer number Calculating power of a number Prime Number checking Generating prime number series Calculating GCD of two numbers Generating table of a number