start workig on the doubly linked list

This commit is contained in:
ergz 2023-07-02 02:22:31 -07:00
parent af3bc40f44
commit ffc4a0202d
6 changed files with 75 additions and 0 deletions

75
c/linked_list.c Normal file
View File

@ -0,0 +1,75 @@
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int value;
struct Node* next;
struct Node* prev;
} Node;
typedef struct LinkedList {
int length;
Node* head;
Node* tail;
} LinkedList;
LinkedList* new_linked_list() {
LinkedList* ll = malloc(sizeof(LinkedList));
ll->length = 0;
return (ll);
}
Node* new_node(int value) {
Node* n = malloc(sizeof(Node));
n->value = value;
n->next = NULL;
n->prev = NULL;
return (n);
}
// append - insert a node at the end of the linked list
// prepend - insert a node at the front of the linked list
void preppend(LinkedList* list, Node* node) {
if (list->length == 0) {
list->head = node;
list->tail = node;
list->length++;
} else {
list->head->prev = node;
node->next = list->head;
list->head = node;
}
}
void print_list(LinkedList* list) {
Node* curr = list->head;
printf("[ ");
while (curr != NULL) {
printf("%d ", curr->value);
curr = curr->next;
}
printf("]\n");
}
int get_size_list(LinkedList* list) {
return 0;
}
// insert at - insert a node at a given index
int main() {
LinkedList* list = new_linked_list();
Node* a = new_node(10);
Node* b = new_node(11);
append(list, a);
append(list, b);
append(list, new_node(12));
append(list, new_node(13));
append(list, new_node(14));
append(list, new_node(15));
print_list(list);
return (0);
}

BIN
c/linked_list.exe Normal file

Binary file not shown.

BIN
c/linked_list.ilk Normal file

Binary file not shown.

BIN
c/linked_list.obj Normal file

Binary file not shown.

BIN
c/linked_list.pdb Normal file

Binary file not shown.

Binary file not shown.