Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.