blob: 78e01ad1097523950cc9d168f1355be2fd3fd1cf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
/************************************************************************
*
* Purpose: To demonstrate 'linked lists' This program will build a
* linked list and place data into it. When the data is exausted
* the contents of the list are O/P.
* This example shows the use of 'typedef' on linked lists.
*
* This is a "First in First out" (FIFO) list.
*
* Author: M. J. Leslie
*
* Date: 11-May-95
*
************************************************************************/
#include <stdlib.h> /* malloc */
/************************************************************************/
/* Declare a structure and give it a
* data type name with 'typdef' */
typedef struct x {
char name[20];
int age;
struct x *next_rec;
} linklist;
/************************************************************************/
main()
{
linklist *start_pointer; /* Define pointers to the structure */
linklist *next_pointer;
/* Create some data to be placed in the
* Linked list. */
char *names[]=
{
"Martin",
"John ",
"Alex ",
""
};
int ages[]={32, 43, 29, 0};
int count=0; /* General purpose counter. */
/*===================================================================*
= =
= Build a LINKED LIST and place data into it. =
= =
*===================================================================*/
/* Initalise 'start_pointer' by reserving
* memory and pointing to it */
start_pointer=(linklist *) malloc (sizeof (linklist));
/* Initalise 'next_pointer' to point
* to the same location. */
next_pointer=start_pointer;
/* Put some data into the reserved
* memory. */
strcpy(next_pointer->name, names[count]);
next_pointer->age = ages[count];
/* Loop until all data has been read */
while ( ages[++count] != 0 )
{
/* Reserve more memory and point to it */
next_pointer->next_rec=(linklist *) malloc (sizeof (linklist));
next_pointer=next_pointer->next_rec;
strcpy(next_pointer->name, names[count]);
next_pointer->age = ages[count];
}
next_pointer->next_rec=NULL;
/*===================================================================*
= =
= Traverse the linked list and O/P all the data within it. =
= =
*===================================================================*/
next_pointer=start_pointer;
while (next_pointer != NULL)
{
printf("%s ", next_pointer->name);
printf("%d \n", next_pointer->age);
next_pointer=next_pointer->next_rec;
}
}
/************************************************************************
*
* Program results.
*
* Martin 32
* John 43
* Alex 29
*
************************************************************************/
|