Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Review of Class on Nov 23:. 2 Chapter 12: Structures and ADTs  Outline  Declaring Structures  Accessing a Member in a structure variable  Initialization.

Similar presentations


Presentation on theme: "1 Review of Class on Nov 23:. 2 Chapter 12: Structures and ADTs  Outline  Declaring Structures  Accessing a Member in a structure variable  Initialization."— Presentation transcript:

1 1 Review of Class on Nov 23:

2 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

3 3 Declaring Structures  How to declare a structure data type?  Example: a structure type to represent a date: Components: day, month, year struct 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

4 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;

5 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

6 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;

7 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

8 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

9 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};

10 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};

11 11 Chapter 12: Structures and ADTs  Summary  Declaring Structures  Accessing a Member in a structure variable member operator “.”: ostructure_variable.member_name structure pointer operator “ -> ” : opointer_to_structure -> member_name  Initialization of Structures A structure variable can be followed by oan equal sign = and oa list of constants contained within braces oIf there are not enough values, the remaining members are assigned the value zero. Read Chapter 12.1 – 12. 6

12 12 Class on Nov. 30

13 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

14 14 include 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; }

15 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.

16 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; data pNext

17 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

18 18 Linear Linked Lists  What is linear Linked List?  How to implement linear linked lists  create a list  counting and lookup  insertion  deletion

19 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; data pNext

20 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.

21 21 Linear Linked Lists  What is linear Linked List?  How to implement linear linked lists  create a list  counting and lookup  insertion  deletion

22 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 ………… NULL

23 23 Linear Linked Lists  Operations on a linked list Define functions such that  create a linked list from a value of type char from an array of type char  counting: the number of elements  looking up an element  inserting an element  deleting an element

24 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; };

25 25 #include 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

26 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; };

27 27 #include 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


Download ppt "1 Review of Class on Nov 23:. 2 Chapter 12: Structures and ADTs  Outline  Declaring Structures  Accessing a Member in a structure variable  Initialization."

Similar presentations


Ads by Google