Advertisement
Guest User

Untitled

a guest
Dec 17th, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.53 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct LIST {
  5.     int number;
  6.     struct LIST* next;
  7. };
  8.  
  9. void insertList ( LIST* newList ) {
  10.     int count = 0;
  11.     int input;
  12.    
  13.     cin >> input;
  14.    
  15.     if ( input != 0 ) {
  16.         newList -> number = input;
  17.         newList -> next = new LIST;
  18.         LIST* walkList = newList -> next;
  19.         while ( 1 ) {
  20.             cin >> input;
  21.            
  22.             if ( input != 0 ) {
  23.                 walkList -> number = input;
  24.                 walkList -> next = new LIST;
  25.                 walkList = walkList -> next;
  26.             }
  27.            
  28.             else {
  29.                 walkList -> number = 0;
  30.                 break;
  31.             }
  32.        
  33.         }
  34.         walkList -> next = NULL;
  35.     }
  36. }
  37.  
  38. void printList ( LIST* newList ) {
  39.     LIST* walkList;
  40.     for ( walkList = newList; walkList != NULL ; walkList = walkList -> next ) {
  41.         cout << walkList -> number << " ";
  42.     }    
  43.     cout << endl;
  44. }
  45.  
  46. int lengthList ( LIST* newList ) {
  47.     LIST* walkList;
  48.     int count = 0;
  49.    
  50.     for ( walkList = newList; walkList != NULL ; walkList = walkList -> next ) {
  51.         count++;
  52.     }  
  53.  
  54.     return count;
  55. }
  56.  
  57. void reverseList  ( LIST* &newList ) {
  58.     LIST* first;
  59.     LIST* second;
  60.     LIST* walkList;
  61.    
  62.     int length = lengthList ( newList );
  63.    
  64.     LIST* lastElem = newList;
  65.     for ( int i = 1; i < length; i++ )
  66.         lastElem = lastElem -> next;
  67.    
  68.     for ( int i = 0; i < length - 1; ++i ) {
  69.         walkList = newList;
  70.         for ( int j = 1; j < length - i; ++j ) {
  71.             first = walkList;
  72.             second = walkList -> next;
  73.             walkList = walkList -> next;
  74.         }
  75.         second -> next = first;
  76.     }
  77.    
  78.     LIST* temp = newList;
  79.     newList = lastElem;
  80.     lastElem = temp;
  81.     lastElem -> next = NULL;
  82. }
  83.  
  84. void insertAfter ( LIST* newList, int n, int itemToAdd ) {
  85.     LIST* walkList = newList;
  86.     LIST* before;
  87.     LIST* after;
  88.     for ( int i = 0; i < n; ++i ) {
  89.         before = walkList;
  90.         walkList = walkList -> next;
  91.         after = walkList;
  92.     }    
  93.     LIST* newItem;
  94.     newItem = new LIST;
  95.     newItem -> number = itemToAdd;
  96.     newItem -> next = after;
  97.     before -> next = newItem;
  98. }
  99.  
  100. void insertBefore ( LIST* newList, int n, int itemToAdd ) {
  101.     LIST* walkList = newList;
  102.     LIST* before;
  103.     LIST* after;
  104.     for ( int i = 0; i < n - 1; ++i ) {
  105.         before = walkList;
  106.         walkList = walkList -> next;
  107.         after = walkList;
  108.     }    
  109.     LIST* newItem;
  110.     newItem = new LIST;
  111.     newItem -> number = itemToAdd;
  112.     newItem -> next = after;
  113.     before -> next = newItem;
  114. }
  115.  
  116. int main () {
  117.     LIST* newList;
  118.     newList = new LIST;
  119.    
  120.     int itemToAdd;
  121.     int where;
  122.    
  123.     cout << "Uzupelnianie listy. 0 konczy wpisywanie: ";
  124.     insertList ( newList );
  125.     cout << "Odwrocona lista: ";
  126.     reverseList ( newList );
  127.     printList ( newList );
  128.     cout << endl;
  129.     cout << "// insertBefore " << endl;
  130.     cout << "Liczba do wstawienia: ";
  131.     cin >> itemToAdd;
  132.     cout << "Przed ktora pozycja: ";
  133.     cin >> where;
  134.     insertBefore ( newList, where, itemToAdd );
  135.     cout << "Po wstawieniu: ";
  136.     printList ( newList );
  137.     cout << endl;
  138.     cout << "// insertAfter" << endl;
  139.     cout << "Liczba do wstawienia: ";
  140.     cin >> itemToAdd;
  141.     cout << "Po ktorej pozycji: ";
  142.     cin >> where;
  143.     insertAfter ( newList, where, itemToAdd );
  144.     cout << "Po wstawieniu: ";
  145.     printList ( newList );
  146.    
  147.     return 0;
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement