-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDeleteLinkedListElement.c
More file actions
59 lines (50 loc) · 1.27 KB
/
DeleteLinkedListElement.c
File metadata and controls
59 lines (50 loc) · 1.27 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
//
// Created by Dominik Kröll on 07.06.21.
//
#include <printf.h>
#include <stdlib.h>
#include "lib/LinkedList.h"
void delete(LinkedList* list, ListElement* it) {
if (list->size == 1) {
free(it);
list->first = NULL;
list->last = NULL;
} else if (it->next == NULL) {
// ODER: it == list.last
it->prev->next = NULL;
list->last = it->prev;
free(it);
} else if (it->prev == NULL) {
it->next->prev = NULL;
list->first = it->next;
free(it);
} else {
ListElement* p1 = it->next;
ListElement* p2 = it->prev;
it->prev->next = p1;
it->next->prev = p2;
free(it);
}
list->size -= 1;
}
int main() {
LinkedList list = newList();
// &list = Zeiger auf Liste.
// Äquivalent zu address(list) im Pseudocode.
addElement(&list, 7);
addElement(&list, 23);
addElement(&list, 42);
//addElement(&list, 66);
//addElement(&list, 79);
//addElement(&list, 96);
//addFirstElement(&list, 1);
printf("Pre delete: \n");
printLinkedList(&list);
ListElement* pt = list.first;
delete(&list, list.first);
// free(pt);
//printf("%d\n", pt->value);
printf("Post delete: \n");
printLinkedList(&list);
return 0;
}