C Programming for Engineers Data Structure ICEN 360 Spring 2017 - - PowerPoint PPT Presentation

c programming for engineers data structure
SMART_READER_LITE
LIVE PREVIEW

C Programming for Engineers Data Structure ICEN 360 Spring 2017 - - PowerPoint PPT Presentation

C Programming for Engineers Data Structure ICEN 360 Spring 2017 Prof. Dola Saha 1 Data Structures Weve studied fixed-size data structures such as single- subscripted arrays, double-subscripted arrays and structs. This topic


slide-1
SLIDE 1

1

C Programming for Engineers Data Structure

ICEN 360– Spring 2017

  • Prof. Dola Saha
slide-2
SLIDE 2

2

Data Structures

Ø We’ve studied fixed-size data structures such as single-

subscripted arrays, double-subscripted arrays and structs.

Ø This topic introduces dynamic data structures with sizes

that grow and shrink at execution time.

§ Linked lists are collections of data items “lined up in a row”—insertions and deletions are made anywhere in a linked list. § Stacks are important in compilers and operating systems—insertions and deletions are made only at one end of a stack—its top. § Queues represent waiting lines; insertions are made only at the back (also referred to as the tail) of a queue and deletions are made only from the front (also referred to as the head) of a queue. § Binary trees facilitate high-speed searching and sorting of data, efficient elimination of duplicate data items, representing file system directories and compiling expressions into machine language.

slide-3
SLIDE 3

3

Linked List

Ø Linked lists are collections of data items “lined up in a row”—

insertions and deletions are made anywhere in a linked list.

Ø Linear Linked List Ø Doubly linked list Ø Circular linked list

slide-4
SLIDE 4

4

Stacks

Ø Stacks are important in compilers and operating systems—

insertions and deletions are made only at one end of a stack—its top.

Ø Stack is referred to as LIFO (last-in-first-out). Ø PUSH Ø POP

slide-5
SLIDE 5

5

Queues

Ø

Queues represent waiting lines; insertions are made only at the back (also referred to as the tail) of a queue and deletions are made only from the front (also referred to as the head) of a queue.

Ø

Used in networking when packets are queued to move from one layer to another.

Ø

Enqueue

Ø

Dequeue

slide-6
SLIDE 6

6

Trees

Ø

A tree is a nonlinear, two-dimensional data structure with special properties.

Ø

Tree nodes contain two or more links.

Ø

Binary trees facilitate high-speed searching and sorting of data, efficient elimination of duplicate data items, representing file system directories and compiling expressions into machine language.

slide-7
SLIDE 7

7

Dynamic Memory Allocation

Ø Creating and maintaining dynamic data structures

requires dynamic memory allocation—the ability for a program to obtain more memory space at execution time to hold new nodes, and to release space no longer needed.

Ø Functions malloc and free, and operator sizeof, are

essential to dynamic memory allocation.

slide-8
SLIDE 8

8

malloc()

Ø void * malloc (size_t size) Ø Input: number of bytes to be allocated Ø Output: a pointer of type void * (pointer to void) to the

allocated memory.

Ø A void * pointer may be assigned to a variable of any

pointer type.

Ø Example:

newPtr = malloc(sizeof(int));

Ø The allocated memory is not initialized. Ø If no memory is available, malloc returns NULL.

slide-9
SLIDE 9

9

free()

Ø Function free deallocates memory—i.e., the memory is

returned to the system so that it can be reallocated in the future.

Ø To free memory dynamically allocated by the preceding

malloc call, use the statement

  • free(newPtr);

Ø C also provides functions calloc and realloc for creating

and modifying dynamic arrays.

slide-10
SLIDE 10

10

Dynamic Memory Allocation

slide-11
SLIDE 11

11

Classroom Assignment

Ø Create a dynamic array of N elements, where the user

may choose the elements to be either integer, float or

  • double. Once the array is created, fill the array with

random numbers. Finally, print out the values.

slide-12
SLIDE 12

12

Self Referencing Structures

Ø A self-referential structure contains a pointer member

that points to a structure of the same structure type.

Ø Example:

  • struct node {

int data; struct node *nextPtr; };

defines a type, struct node.

Ø A structure of type struct node has two members—

integer member data and pointer member nextPtr.

slide-13
SLIDE 13

13

Linked List graphical representation

slide-14
SLIDE 14

14

Insert a node in order in a list

slide-15
SLIDE 15

15

Insert a node – C code

slide-16
SLIDE 16

16

Delete a node from list

slide-17
SLIDE 17

17

Delete a node – C code

slide-18
SLIDE 18

18

Classwork Assignment

Ø Write a function to print the elements of a list.