Advertisement
Guest User

Untitled

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