Unheadless single-chain table reversal

Source: Internet
Author: User
  1 #include <iostream>                                                                                                   2   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 <<endl;  39         head = head->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                                                                                                

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.