-
Notifications
You must be signed in to change notification settings - Fork 0
/
listmain.c
86 lines (67 loc) · 2.09 KB
/
listmain.c
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
#include <stdio.h>
#include <stdlib.h>
#include "list.h"
void printDup(int b) {
printf("No duplicates in above? = %s\n", b ? "true" : "false");
}
int main(void) {
struct node *intlist = NULL;
int i;
int array[] = {10,10,9,9,8,5,5,5,4,3,3,2,1};
for (i = 0; i < sizeof(array) / sizeof(*array); i++) {
intlist = add_to_list(intlist, array[i]);
}
printf("Double list\n");
printAll(intlist);
doubleAll(intlist);
printAll(intlist);
doubleAll(intlist);
printAll(intlist);
printf("\nDelete 1\n");
intlist = deleteAll(intlist, 1);
printAll(intlist);
printf("Delete 5\n");
intlist = deleteAll(intlist, 5);
printAll(intlist);
int l1[] = {8,7,5,3,1};
int l2[] = {9,8,6,5,2};
struct node *ll1 = NULL, *ll2 = NULL;
for (i = 0; i < 5; i++){
ll1 = add_to_list(ll1, l1[i]);
ll2 = add_to_list(ll2, l2[i]);
}
printf("\nMerge two lists\n");
printAll(ll1);
printAll(ll2);
struct node *merged = merge(ll1, ll2);
printAll(merged);
printf("\n");
printAll(merged);
printAll(intlist);
merged = merge(merged, intlist);
printAll(merged);
printf("\nCheck for duplicates\n");
printAll(merged);
printDup(nodupdata(merged));
int arr[] = {1,2,3,4,5};
struct node *noDup = NULL;
for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
noDup = add_to_list(noDup, arr[i]);
}
printAll(noDup);
printDup(nodupdata(noDup));
printf("\nDetect loops with negative lengths\n");
printAll(noDup);
printf("length = %d\n", looplesslength(noDup));
noDup = add_to_list(noDup, 6);
printAll(noDup);
printf("length = %d\n", looplesslength(noDup));
struct node *loopStart = noDup->next;
loopStart->next->next->next->next->next = loopStart;
printAll(noDup);
printf("length = %d\n", looplesslength(noDup));
loopStart->next->next->next->next->next = NULL;
freeAll(&merged);
freeAll(&noDup);
return 0;
}