Untitled
#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; }
Leave a Comment