Repository navigation
Expand file tree
/
Copy path005_dll_create_display.cpp
More file actions
82 lines (68 loc) · 2.03 KB
/
Copy path005_dll_create_display.cpp
File metadata and controls
82 lines (68 loc) · 2.03 KB
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
#include <stdio.h>
#include <stdlib.h>
struct node {
int num;
struct node *preptr;
struct node *nextptr;
} *stnode, *ennode;
void DlListcreation(int n);
void displayDlListRev();
int main() {
int n;
stnode = NULL;
ennode = NULL;
printf("\n\n Doubly Linked List: Create and display a doubly linked list in reverse order:\n");
printf("------------------------------------------------------------------------------------\n");
printf(" Input the number of nodes : ");
scanf("%d", &n);
DlListcreation(n);
displayDlListRev();
return 0;
}
void DlListcreation(int n) {
int i, num;
struct node *fnNode;
if (n >= 1) {
stnode = (struct node *)malloc(sizeof(struct node));
if (stnode != NULL) {
printf(" Input data for node 1 : ");
scanf("%d", &num);
stnode->num = num;
stnode->preptr = NULL;
stnode->nextptr = NULL;
ennode = stnode;
for (i = 2; i <= n; i++) {
fnNode = (struct node *)malloc(sizeof(struct node));
if (fnNode != NULL) {
printf(" Input data for node %d : ", i);
scanf("%d", &num);
fnNode->num = num;
fnNode->preptr = ennode;
fnNode->nextptr = NULL;
ennode->nextptr = fnNode;
ennode = fnNode;
} else {
printf(" Memory can not be allocated.");
break;
}
}
} else {
printf(" Memory can not be allocated.");
}
}
}
void displayDlListRev() {
struct node *tmp;
int n = 0;
if (ennode == NULL) {
printf(" No data found in the List yet.");
} else {
tmp = ennode;
printf("\n Data in reverse order are :\n");
while (tmp != NULL) {
printf(" Data in node %d : %d\n", n + 1, tmp->num);
n++;
tmp = tmp->preptr;
}
}
}