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
1
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
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
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
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
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
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
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
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
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
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
12
Class on Nov. 30
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
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; }}
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
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
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
Linear Linked Lists
What is linear Linked List?How to implement linear linked lists
create a list counting and lookup insertion deletion
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
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
Linear Linked Lists
What is linear Linked List?How to implement linear linked lists
create a list counting and lookup insertion deletion
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
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
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
#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
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
#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