Untitled
public
Apr 27, 2025
Never
35
1 2 #include <stdio.h> 3 #include <stdlib.h> 4 typedef struct _node { 5 int x; 6 struct _node *next; 7 struct _node *prev; 8 } Node; 9 10 void Insert(Node* tar, int val){ 11 Node* tmp = (Node *) malloc(sizeof(Node)); 12 tmp->x = val; 13 tmp->next = tar->next; 14 tar->next = tmp; 15 } 16 17 void Remove(Node* head, Node* tar){ 18 Node* tmp = head; 19 while(tmp->next!=tar){ 20 tmp = tmp->next; 21 } 22 tmp->next = tmp->next->next;//tmp->next = tar->next; 23 free(tar); 24 } 25 26 void addElement(Node* head, int val){ 27 Node* tmp = head; 28 while(tmp->next){ //while(tmp->next!=NULL) 29 tmp = tmp->next; 30 } 31 tmp->next = (Node *) malloc(sizeof(Node)); 32 tmp->next->x = val; 33 tmp->next->next = NULL; 34 tmp->next->prev = tmp; 35 } 36 37 void removeLast(Node* head){ 38 if(!head) return; 39 Node* tmp = head; 40 while(tmp->next){ 41 tmp = tmp->next; 42 } 43 tmp->prev->next = NULL; 44 free(tmp); 45 } 46 47 void printList(Node* head){ 48 49 while (head!=NULL) { 50 printf("%d ", head->x); 51 head = head->next; 52 } 53 printf("\n"); 54 } 55 56 void freeList(Node* head){ 57 58 Node* np; 59 while (head!=NULL) { 60 np = head; 61 head = head->next; 62 printf("Freeing %d\n",np->x); 63 free(np); 64 } 65 } 66 67 int main(void) 68 { 69 Node *head; 70 Node *np, *nq; 71 int i; 72 73 head = (Node *) malloc(sizeof(Node)); 74 head->x = 0; 75 head->next = (Node *) malloc(sizeof(Node)); 76 head->prev = NULL; 77 78 i = 1; 79 nq = head; 80 while (i < 10) { 81 np = (Node *) malloc(sizeof(Node)); 82 np->x = i; 83 np->next = NULL; 84 np->prev = nq; 85 nq->next = np; 86 nq = nq->next; 87 i++; 88 } 89 90 printList(head); 91 // Insert(head.next->next->next, 777); 92 // printList(head); 93 // Remove(&head, head.next->next->next->next->next->next); 94 // printList(head); 95 addElement(&head,26); 96 printList(head); 97 removeLast(&head); 98 printList(head); 99 // addElement(&head,22); 100 // printList(head); 101 // addElement(&head,23); 102 // printList(head); 103 freeList(head); 104 105 return 0; 106 }