review of class on nov 23 :

27
1 Review of Class on Nov 23:

Upload: sibley

Post on 21-Jan-2016

27 views

Category:

Documents


4 download

DESCRIPTION

Review of Class on Nov 23 :. Chapter 12: Structures and ADTs. Outline Declaring Structures Accessing a Member in a structure variable Initialization of Structures The use of typedef Self-Referential Structures Linear Linked Lists. members of the structure. Declaring Structures. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Review of  Class on Nov 23 :

1

Review of Class on Nov 23:

Page 2: Review of  Class on Nov 23 :

2

Chapter 12: Structures and ADTs

Outline Declaring Structures Accessing a Member in a structure variable Initialization of Structures The use of typedef Self-Referential Structures Linear Linked Lists

Page 3: Review of  Class on Nov 23 :

3

Declaring Structures

How to declare a structure data type? Example: a structure type to represent a

date: Components: day, month, yearstruct date_str{

int day;int month;int year;

};

This declaration creates the derived date type struct date_str.

members of the structure

structure tag name

Page 4: Review of  Class on Nov 23 :

4

Declaring Structures

How to declare variables of a structure type? Declare variables in declaration of a structure type

struct date_str{int day;int month;int year;

} date1, date2; Declare variables “struct str_name variable_list;”

struct date_str{int day;int month;int year;

}; struct date_str date3, date4;

Page 5: Review of  Class on Nov 23 :

5

Chapter 12: Structures and ADTs

Outline Declaring Structures Accessing a Member in a structure variable Initialization of Structures The use of typedef Self-Referential Structures Linear Linked Lists

Page 6: Review of  Class on Nov 23 :

6

Access a member

How to access a member? member operator “.”

structure_variable.member_name Example:

struct date_str{int day;int month;int year;

} date1, date2;date1.year = 2000; data2.year= 2005;date1.day = date2.day = 10;date1.month = date2.month = 11;

Page 7: Review of  Class on Nov 23 :

7

Accessing a Member

How to access a member? structure pointer operator ->

access the members of a structure via a pointer.

pointer_to_structure -> member_name (*pointer_to_structure).member_name

Example: struct date_str *pDate = &date1;

(*pDate).day pDate->day

Page 8: Review of  Class on Nov 23 :

8

Chapter 12: Structures and ADTs

Outline Declaring Structures Accessing a Member in a structure variable Initialization of Structures The use of typedef Self-Referential Structures Linear Linked Lists

Page 9: Review of  Class on Nov 23 :

9

Initialization of Structures

Initialization A structure variable can be followed by

an equal sign = and a list of constants contained within braces

Example:struct date_str{ int day; int month; int year;};struct date_str date={12, 12, 2000};

Page 10: Review of  Class on Nov 23 :

10

Initialization of Structures

Initialization If there are not enough values, the remaining

members are assigned the value zero. Example:

struct student_str{ char last_name[15]; char first_name[15]; int UIN; int assign[6]; int midterm[3]; int final; }

strcut student_str s1={“Bush”, “Jenny”, 80002211};

Page 11: Review of  Class on Nov 23 :

11

Chapter 12: Structures and ADTs

Summary Declaring Structures Accessing a Member in a structure variable

member operator “.”:o structure_variable.member_name

structure pointer operator “ -> ” :o pointer_to_structure -> member_name

Initialization of StructuresA structure variable can be followed by

o an equal sign = and o a list of constants contained within braceso If there are not enough values, the remaining

members are assigned the value zero.

Read Chapter 12.1 – 12. 6

Page 12: Review of  Class on Nov 23 :

12

Class on Nov. 30

Page 13: Review of  Class on Nov 23 :

13

Chapter 12: Structures and ADTs

Outline Declaring Structures Accessing a Member in a structure variable Initialization of Structures Self-Referential Structures Linear Linked Lists The use of typedef

Page 14: Review of  Class on Nov 23 :

14

include <stdio.h>int main(void){ struct list{ int data; struct list *pNext; } a, b, c; struct list* p=&a;

a.data=1; b.data=2; c.data=3; a.pNext = &b; b.pNext = &c; c.pNext = NULL;

while (p!=NULL){ printf("%2d ", p->data); p = p->pNext; }}

Page 15: Review of  Class on Nov 23 :

15

Self-Referential Structures

self-referential structures structures with pointer members that point

to the structure type containing them. Example:

struct list{ int data; struct list *pNext; } a, b, c;

member pNext points to the structure type struct list, which contains pNext as a member

struct list is a self-referential structure.

Page 16: Review of  Class on Nov 23 :

16

Self-Referential Structures

Using self-referential structures to implement linear linked lists

1

&b

a

2

&c

b

3

NULL

c

struct list{ int data; struct list *pNext; } a, b, c;

a.data=1; b.data=2; c.data=3; a.pNext = &b; b.pNext = &c; c.pNext = NULL;

datapNext

Page 17: Review of  Class on Nov 23 :

17

Chapter 12: Structures and ADTs

Outline Declaring Structures Accessing a Member in a structure variable Initialization of Structures Self-Referential Structures Linear Linked Lists The use of typedef

Page 18: Review of  Class on Nov 23 :

18

Linear Linked Lists

What is linear Linked List?How to implement linear linked lists

create a list counting and lookup insertion deletion

Page 19: Review of  Class on Nov 23 :

19

Linear Linked Lists

What is Linear Linked List? data structure hang sequentially.

a head pointer that points to the first element of the list,

each element points at a successor element,

the last element having a link value NULL. 1

&b

pHead

2

&c

3

NULL

struct list{ int data; struct list *pNext; } a, b, c;

datapNext

Page 20: Review of  Class on Nov 23 :

20

Linear Linked Lists

Linear Linked Lists A linked list is a very common data

structure. It can be used to implement efficient

algorithms, such as sorting, searching.

Page 21: Review of  Class on Nov 23 :

21

Linear Linked Lists

What is linear Linked List?How to implement linear linked lists

create a list counting and lookup insertion deletion

Page 22: Review of  Class on Nov 23 :

22

Linear Linked Lists

How to implement linear linked lists Consider the following list:

struct linked_list{ char data; struct linked_list *pNext;};

pHead

data

data

data

data

data

data …………

NULL

Page 23: Review of  Class on Nov 23 :

23

Linear Linked Lists

Operations on a linked listDefine functions such that create a linked list

from a value of type charfrom an array of type char

counting: the number of elements looking up an element inserting an element deleting an element

Page 24: Review of  Class on Nov 23 :

24

Linear Linked Lists

Operations on a linked list create a linked list from a value:

struct linked_list *create_value(char data);

return the head pointer of a link which contains a single item; the data field of this item is data.

struct linked_list * pHead;pHead = create_value(‘A’); pHead

‘A’

NULL

struct linked_list{ char data; struct linked_list *pNext;};

Page 25: Review of  Class on Nov 23 :

25

#include <stdio.h>struct linked_list{ char data; struct linked_list *pNext;};struct linked_list *create_value(char data);#include "list.h"int main(){ struct linked_list *pHead; pHead = (struct linked_list *) create_value('A'); …….}

list.h

main.c

#include "list.h"struct linked_list *create_value(char data){ struct linked_list *pHead = NULL; pHead = (struct linked_list *) malloc(sizeof(struct linked_list)); pHead->data = data; pHead->pNext = NULL; return pHead;}

list.c

pHead

‘A’

NULL

Page 26: Review of  Class on Nov 23 :

26

Linear Linked Lists

Operations on a linked list create a linked list from an array:

struct linked_list *create_array(char data_array[], int n);

return the head pointer of a link which contains n items; the data fields of the items are decided by data_array.

char data_array[]={'a', 'b', 'c', 'd', 'e'};struct linked_list * pHead;

pHead = create_array(data_array, 5);

pHead

‘a’ ‘b’ ‘c’ ‘d’ ‘e’

NULL

struct linked_list{ char data; struct linked_list *pNext;};

Page 27: Review of  Class on Nov 23 :

27

#include <stdio.h>struct linked_list{ char data; struct linked_list *pNext;};struct linked_list *create_array(char data_array[],

int n);

#include "list.h"int main(){ struct linked_list *pHead; char data_array[]={'a', 'b', 'c', 'd', 'e'}; pHead = create_array(data_array, 5); ……}struct linked_list *create_array(char data_array[], int n){

struct linked_list *p=NULL, *pHead = NULL; int i; if(n==0) return NULL; else{ pHead = (struct linked_list *) malloc(sizeof(struct linked_list)); pHead->data = data_array[0]; pHead->pNext = NULL; p = pHead; for (i=1; i<n;i++){ p->pNext = (struct linked_list *) malloc(sizeof(struct linked_list)); p->pNext->data = data_array[i]; p->pNext->pNext = NULL; p = p->pNext; } } return pHead;}

list.h main.c

pHead

‘a’ ‘b’ ‘c’ ‘d’ ‘e’NULL

list.c