exam task
This commit is contained in:
parent
0233e876c4
commit
7cb07f66ef
|
@ -24,8 +24,7 @@ void add_node(NODE *list, int val) {
|
||||||
if (node == NULL) {
|
if (node == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (; list->next != NULL; list = list->next)
|
for (; list->next != NULL; list = list->next);
|
||||||
;
|
|
||||||
list->next = node;
|
list->next = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +66,43 @@ NODE *reverse_list(NODE *list) {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void delete_list(NODE* list) {
|
||||||
|
if(list -> next == NULL) {
|
||||||
|
free(list);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NODE* next_node = list -> next;
|
||||||
|
while (next_node != NULL) {
|
||||||
|
free(list);
|
||||||
|
list = next_node;
|
||||||
|
next_node = list -> next;
|
||||||
|
}
|
||||||
|
free(list);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NODE* list_remove_all(NODE *list, int val) {
|
||||||
|
NODE* head = list;
|
||||||
|
NODE* buf;
|
||||||
|
while (head != NULL && head->val == val) {
|
||||||
|
buf = head->next;
|
||||||
|
free(head);
|
||||||
|
head = buf;
|
||||||
|
}
|
||||||
|
if (head == NULL) return head;
|
||||||
|
list = head;
|
||||||
|
while (list->next != NULL) {
|
||||||
|
if (list->next->val == val) {
|
||||||
|
while(list->next != NULL && list->next->val == val) {
|
||||||
|
buf = list->next;
|
||||||
|
list->next = list->next->next;
|
||||||
|
free(buf);
|
||||||
|
}
|
||||||
|
} else list = list->next;
|
||||||
|
}
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
NODE *list = init_node(4);
|
NODE *list = init_node(4);
|
||||||
add_node(list, 5);
|
add_node(list, 5);
|
||||||
|
@ -79,10 +115,17 @@ int main() {
|
||||||
add_node(list, 2);
|
add_node(list, 2);
|
||||||
add_node(list, 3);
|
add_node(list, 3);
|
||||||
add_node(list, 4);
|
add_node(list, 4);
|
||||||
|
add_node(list, 3);
|
||||||
|
add_node(list, 3);
|
||||||
|
add_node(list, 1);
|
||||||
print_list(list);
|
print_list(list);
|
||||||
printf("\n[%d]\n\n", count_length(list));
|
printf("\n[%d]\n\n", count_length(list));
|
||||||
list = reverse_list(list);
|
list = reverse_list(list);
|
||||||
print_list(list);
|
print_list(list);
|
||||||
printf("\n[%d]\n\n", count_length(list));
|
printf("\n[%d]\n\n", count_length(list));
|
||||||
|
list = list_remove_all(list, 1);
|
||||||
|
print_list(list);
|
||||||
|
printf("\n[%d]\n\n", count_length(list));
|
||||||
|
delete_list(list);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue