Advertisement
Guest User

GDDE

a guest
Aug 22nd, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <exception>
  4.  
  5. using namespace std;
  6.  
  7. struct Node{
  8.     int data;
  9.     Node* next;
  10. }
  11.  
  12. class SLL{
  13.     private:
  14.     Node* t;
  15.  
  16.     void add(int &zahl, Node* &w);
  17.     void print_helper(Node* curr);
  18.     void size_helper(Node* curr, int zahl);
  19.     void clear_helper(Node* &curr);
  20.    
  21.     public:
  22.  
  23.     SLL(){
  24.         t = nullptr;
  25.     };
  26.  
  27.     ~SLL(){
  28.         clear();
  29.     };
  30.  
  31.     void print();
  32.  
  33.     void size();
  34.    
  35.     void clear();
  36.  
  37.     void append(int zahl);
  38.  
  39.     int search(int zahl);
  40. }
  41.  
  42. void SLL::add(int &zahl, Node* w){
  43.     if (w == nullptr){
  44.         t = new Node;
  45.         t ->data = zahl;
  46.     }else{
  47.         Node* curr = t;
  48.         Node* prev = nullptr;
  49.  
  50.         while(curr != nullptr && curr -> data < zahl){
  51.             prev = curr;
  52.             curr = curr -> next;
  53.         }
  54.  
  55.         if(prev == nullptr){
  56.             Node* tmp = new Node;
  57.             tmp -> data = zahl;
  58.             t = tmp;
  59.             tmp -> next = curr;
  60.         }
  61.         if(curr == nullptr){
  62.             Node* tmp = new Node;
  63.             tmp -> data = zahl;
  64.             prev -> next = tmp;
  65.         }
  66.         else{
  67.             Node* tmp = new Node;
  68.             tmp -> data = zahl;
  69.             tmp -> next = curr;
  70.             prev -> next = tmp;
  71.         }
  72.     }
  73. }
  74.  
  75. void SLL::append(int zahl){
  76.     add(zahl, t);
  77. };
  78.  
  79. void SLL::print(){
  80.     print_helper(t);
  81. }
  82.  
  83. void SLL::print_helper(Node* &curr){
  84.     if (curr != nullptr){
  85.         cout << curr ->data << endl;
  86.         print_helper(curr -> next);
  87.     }
  88. }
  89.  
  90. void SLL::size(){
  91.     size_helper(t, 0);
  92. }
  93.  
  94. void SLL::size_helper(Node* &curr, int zahl){
  95.     if (curr != nullptr){
  96.         zahl++;
  97.         size_helper(curr->next, zahl);
  98.     }
  99.     cout << zahl << endl;
  100. }
  101.  
  102. void SLL::clear(){
  103.     if(t != nullptr){
  104.         clear_helper(t);
  105.     }
  106. }
  107.  
  108. void SLL::clear_helper(Node* &curr){
  109.     if(curr -> next != nullptr){
  110.         clear_helper(curr -> next);
  111.     }else{
  112.         delete curr;
  113.         curr = nullptr;
  114.     }
  115. }
  116.  
  117. void SLL::search(int zahl){
  118.     if (t == nullptr){
  119.         throw logic_error("LEER");
  120.     }else{
  121.         int idx = 0;
  122.         Node* curr = t;
  123.  
  124.         while (curr != nullptr){
  125.             if(curr -> data == zahl){
  126.                 return idx;
  127.             }
  128.             idx++;
  129.             curr = curr -> next;
  130.         }
  131.         throw logic_error("NIX GUT!");
  132.     }  
  133. }
  134.  
  135. int main(int argc, char* argv[]){
  136.     try{
  137.         if (argc < 2){
  138.             throw logic_error("too little arguments");
  139.         }else{
  140.            
  141.         }
  142.         return 0;
  143.     }catch (logic_error &e){
  144.         cerr << e.what << endl;
  145.         return 1;
  146.     }
  147. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement