review of class on nov 23 :
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 PresentationTRANSCRIPT
![Page 1: Review of Class on Nov 23 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/1.jpg)
1
Review of Class on Nov 23:
![Page 2: Review of Class on Nov 23 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/2.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/3.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/4.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/5.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/6.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/7.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/8.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/9.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/10.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/11.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/12.jpg)
12
Class on Nov. 30
![Page 13: Review of Class on Nov 23 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/13.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/14.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/15.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/16.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/17.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/18.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/19.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/20.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/21.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/22.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/23.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/24.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/25.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/26.jpg)
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 :](https://reader038.vdocuments.site/reader038/viewer/2022103101/56815022550346895dbe093b/html5/thumbnails/27.jpg)
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