Untitled
unknown
plain_text
10 months ago
1.7 kB
17
Indexable
#include <stdio.h>
#include <stdlib.h>
struct node {
int val;
struct node* next;
struct node* prev;
};
struct node* create_node(int val) {
struct node* newnode = (struct node*)malloc(sizeof(struct node));
newnode->val = val;
newnode->next = NULL;
newnode->prev = NULL;
return newnode;
}
void insert_at_head(struct node** head, struct node** tail, int val) {
struct node* newnode = create_node(val);
newnode->next = *head;
newnode->prev = *tail;
(*head)->prev = newnode;
(*tail)->next = newnode;
*head = newnode;
}
void insert_at_tail(struct node** head, struct node** tail, int val) {
struct node* newnode = create_node(val);
newnode->prev = *tail;
(*tail)->next = newnode;
newnode->next = *head;
(*head)->prev = newnode;
*tail = newnode;
}
void print(struct node* head, int size) {
struct node* temp = head;
int count = 0;
while (count < size) {
printf("%d\n", temp->val);
temp = temp->next;
count++;
}
}
int main() {
struct node* head = create_node(10);
struct node* a = create_node(20);
struct node* b = create_node(30);
head->next = a;
a->next = b;
b->next = head;
head->prev = b;
a->prev = head;
b->prev = a;
int size = 3;
insert_at_head(&head, &b, 100);
size++;
print(head, size);
insert_at_tail(&head, &b, 200);
printf("\n");
size++;
print(head, size);
struct node* current = head;
struct node* next_node;
for (int i = 0; i < size; i++) {
next_node = current->next;
free(current);
current = next_node;
}
return 0;
}Editor is loading...
Leave a Comment