1 #include2 3 using namespace std; 4 5 struct node 6 { 7 int data; 8 node *next; 9 }; 10 11 12 node *list_create(void) 13 { 14 node *head = NULL; 15 node **current = &head; 16 17 cout << "input value until -1" << endl; 18 19 int a = 0; 20 cin >> a; 21 while(a != -1) 22 { 23 *current = new node; 24 (*current)->next = NULL; 25 (*current)->data = a; 26 current = &((*current)->next); 27 cin >> a; 28 } 29 30 return head; 31 } 32 33 void list_print(const node *head) 34 { 35 36 while(head) 37 { 38 cout << "node->next is : " << head->next << " node->data is : " << head->data < next; 40 } 41 } 42 43 node *node_delete(node *head, int data) 44 { 45 if(head == NULL) 46 return head; 47 48 node *current = head; 49 node *prev = head; 50 51 if(head->data == data) 52 { 53 head = head->next; 54 current->next = NULL; 55 delete current; 56 return head; 57 } 58 59 60 while(current) 61 { 62 if(current->data == data) 63 break; 64 prev = current; 65 current = current->next; 66 } 67 68 if(current) 69 { 70 prev->next = current->next; 71 current->next = NULL; 72 delete current; 73 } 74 75 return head; 76 } 77 78 void list_delete(node *head) 79 { 80 node *temp; 81 while(head) 82 { 83 temp = head; 84 head = head->next; 85 temp->next = NULL; 86 delete temp; 87 } 88 } 89 90 node* list_insert(node *head, int data) 91 { 92 node *node_new = new node; 93 node_new->data = data; 94 node_new->next = NULL; 95 96 if(head == NULL) 97 { 98 head = node_new; 99 return head;100 }101 102 if(head->data >= data)103 {104 node_new->next = head;105 head = node_new;106 return head;107 }108 109 node *prev = head;110 node *current = head;111 112 while(current)113 {114 if(current->data < data)115 {116 prev = current;117 current = current->next;118 continue;119 }120 break;121 }122 123 node_new->next = current;124 prev->next=node_new; 125 return head;126 }127 128 node *list_rev(node *head)129 {130 if(NULL == head)131 return head;132 133 node *prev = head;134 node *current = head;135 node *next = head->next;136 137 138 while(next != NULL)139 {140 current = next;141 next = current->next;142 current->next = prev;143 prev = current;144 }145 146 head->next = NULL;147 head = current;148 return head;149 }150 151 node *create_sort(void)152 {153 node * head = NULL;154 int a = 0;155 cin >> a;156 while(a != -1)157 {158 head = list_insert(head, a);159 cin >> a;160 }161 162 return head;163 }164 int main(void)165 {166 node *head;167 int num;168 head = list_create();169 list_print(head);170 171 cout << "input the delete number" << endl;172 cin >> num;173 174 head = node_delete(head, num);175 176 list_print(head);177 178 list_delete(head);179 180 head = create_sort();181 182 list_print(head);183 184 head = list_rev(head);185 186 list_print(head); 187 188 list_delete(head);189 190 return 0;191 } 192