1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | typedef enum {false,true} bool; typedef int Data; typedef struct _Node { Data item; struct _Node *next; struct _Node *prev; } Node; typedef struct { Node *head; int len; } DoubleLinkedList; void InitList(DoubleLinkedList *plist){ Node* dummy1, *dummy2; dummy1 = (Node*)malloc(sizeof(Node)); dummy2 = (Node*)malloc(sizeof(Node)); dummy1->prev = NULL; dummy1->next = dummy2; dummy2->prev = dummy1; dummy2->next = NULL; plist->head = dummy1; plist->len = 0; } void InsertMiddle(DoubleLinkedList *plist, int pos, Data item){ Node* cur, *newNode; newNode= (Node*)malloc(sizeof(Node)); newNode->item = item; newNode->prev = NULL; newNode->next = NULL; cur = plist->head; for(int i=0; i < pos;i++){ cur= cur->next; } newNode->prev = cur; newNode->next = cur->next; cur->next->prev = newNode; cur->next = newNode; plist->len++; } void RemoveMiddle(DoubleLinkedList *plist, int pos){ Node* cur, *temp; if(IsEmpty(plist) || pos< 0 || pos >= plist->len) exit(1); cur = plist->head; for(int i=0; i < pos;i++){ cur = cur->next; } temp = cur->next; temp->next->prev = cur; cur->next = temp->next; plist->len--; free(temp); } | cs |
'[자료구조론] - Data Structure > [Concept]' 카테고리의 다른 글
Dynamic Queue (Using LinkedList) (0) | 2020.10.19 |
---|---|
Dynamic Stack (Using Linked List) (0) | 2020.10.19 |
CircularList (0) | 2020.10.19 |
LinkedList Application (0) | 2020.10.13 |
List (0) | 2020.10.13 |