Advertisement
uopspop

Untitled

May 4th, 2016
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct _node{
  5.     int data;
  6.     struct _node *next;
  7. };
  8. typedef struct _node node;
  9.  
  10. void inputNode(node*, int);
  11. void printNode(node*, int);
  12. node* reverseNodes(node*);
  13.  
  14. int main(){
  15.     node *head, *ptr;
  16.     head = new node;   
  17. // initialize data value
  18.     int n;
  19.     cout << "how many struct do you need: "; cin >> n;
  20.     inputNode(head,n);
  21.     printNode(head,n);
  22.    
  23. // 插入第一個節點前面:
  24.     node *new_nodeHead;
  25.     new_nodeHead = new node;
  26.     new_nodeHead->next = head;
  27.     head= new_nodeHead;
  28.     cout << "Please input value for inserted node: ";
  29.     cin >> new_nodeHead->data;
  30.     printNode(head,++n);
  31.  
  32. // 插入最後一個節點前面:
  33.     node *new_nodeTail;
  34.     new_nodeTail = new node;
  35.     // move ptr to the last node
  36.     ptr = head;
  37.     node *last;
  38.     while (ptr != NULL){
  39.         last = ptr;
  40.         ptr = ptr->next;
  41.     }// end while
  42.     new_nodeTail->next = last->next; //new_nodeTail->next = NULL;
  43.     last->next = new_nodeTail;
  44.     cout << "Please input value for inserted node: ";
  45.     cin >> new_nodeTail->data;
  46.     printNode(head,++n);
  47.  
  48. // 插入第二節點後面:
  49.     node *new_nodeMiddle;
  50.     new_nodeMiddle = new node;
  51.     // move ptr to the last node
  52.     ptr = head;
  53.     node *middle;
  54.     int count = 0;
  55.     while (count < 2){
  56.         middle = ptr;
  57.         ptr = ptr->next;
  58.         count++;
  59.     }// end while
  60.     new_nodeMiddle->next = middle->next; // 精華
  61.     middle->next = new_nodeMiddle;
  62.     cout << "Please input value for inserted node: ";
  63.     cin >> new_nodeMiddle->data;
  64.     printNode(head,++n);
  65.  
  66. // free memory
  67.     delete new_nodeMiddle;
  68.     delete new_nodeHead;
  69.     delete head;
  70. }
  71.  
  72.  
  73.  
  74.  
  75. void inputNode(node* ptr, int n){
  76.     int value;
  77.     for (int i = 0; i < n; i++){
  78.         if (i == 0){
  79.             cout << "Please input the value for " << i+1 << " struct: " ;
  80.             cin >> value;
  81.             ptr->data = value;
  82.             continue;          
  83.         }
  84.        
  85.         ptr->next = new node;
  86.         ptr = ptr->next;
  87.  
  88.         cout << "Please input the value for " << i+1 << " struct: " ;
  89.         cin >> value;
  90.         ptr->data = value;
  91.     }
  92. }
  93.  
  94. void printNode(node* ptr, int n){
  95.     for (int i = 0; i < n; i++){
  96.         cout << "the value for " << i+1 << " struct: " << ptr->data << endl;
  97.         ptr = ptr->next;
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement