more work on linked list
This commit is contained in:
parent
be4a1c4fc0
commit
ebfc215fb4
|
@ -80,6 +80,17 @@ void insert_at(LinkedList* list, Node* node, int index) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void remove_at_end(LinkedList* list) {
|
||||||
|
if (list->length == 0) {
|
||||||
|
printf("ERROR: cannot remove from an empty list\n");
|
||||||
|
} else {
|
||||||
|
Node* node_to_remove = list->tail;
|
||||||
|
list->tail = node_to_remove->prev;
|
||||||
|
list->tail->next = NULL;
|
||||||
|
free(node_to_remove);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int get_length(LinkedList* list) {
|
int get_length(LinkedList* list) {
|
||||||
return (list->length);
|
return (list->length);
|
||||||
}
|
}
|
||||||
|
@ -109,25 +120,69 @@ void print_list(LinkedList* list) {
|
||||||
printf("] <length: %d>\n", get_length(list));
|
printf("] <length: %d>\n", get_length(list));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LinkedList* new_list_from_array(int arr[], int length) {
|
||||||
|
if (length == 0) {
|
||||||
|
printf("ERROR: i mean c'mon");
|
||||||
|
}
|
||||||
|
LinkedList* list = new_linked_list();
|
||||||
|
Node* n = new_node(arr[1]);
|
||||||
|
list->head = n;
|
||||||
|
list->length++;
|
||||||
|
for (int i = 1; i < length; i++) {
|
||||||
|
Node* n = new_node(arr[i]);
|
||||||
|
append(list, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (list);
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
LinkedList* list = new_linked_list();
|
LinkedList* list = new_linked_list();
|
||||||
Node* a = new_node(10);
|
|
||||||
Node* b = new_node(11);
|
Node* a = new_node(10);
|
||||||
|
Node* b = new_node(11);
|
||||||
preppend(list, a);
|
preppend(list, a);
|
||||||
|
print_list(list);
|
||||||
preppend(list, b);
|
preppend(list, b);
|
||||||
|
print_list(list);
|
||||||
preppend(list, new_node(12));
|
preppend(list, new_node(12));
|
||||||
|
print_list(list);
|
||||||
preppend(list, new_node(13));
|
preppend(list, new_node(13));
|
||||||
|
print_list(list);
|
||||||
preppend(list, new_node(14));
|
preppend(list, new_node(14));
|
||||||
|
print_list(list);
|
||||||
preppend(list, new_node(15));
|
preppend(list, new_node(15));
|
||||||
|
print_list(list);
|
||||||
|
|
||||||
append(list, new_node(100));
|
append(list, new_node(100));
|
||||||
append(list, new_node(200));
|
|
||||||
|
|
||||||
print_list(list);
|
print_list(list);
|
||||||
|
append(list, new_node(200));
|
||||||
|
print_list(list);
|
||||||
|
|
||||||
insert_at(list, new_node(-1), 0);
|
insert_at(list, new_node(-1), 0);
|
||||||
|
print_list(list);
|
||||||
insert_at(list, new_node(-1), 4);
|
insert_at(list, new_node(-1), 4);
|
||||||
print_list(list);
|
print_list(list);
|
||||||
|
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
remove_at_end(list);
|
||||||
|
print_list(list);
|
||||||
|
|
||||||
|
int first_node_val = get_val(list, 1);
|
||||||
|
printf("the value at the first node is: %d\n", first_node_val);
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
|
Loading…
Reference in New Issue