Advertisement
Nikitka_36

Spiski 1

Apr 2nd, 2014
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.44 KB | None | 0 0
  1. main.cpp
  2.  
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <ctime>
  6.  
  7. #include <conio.h>
  8.  
  9. #include "List.h"
  10.  
  11. using namespace std;
  12.  
  13. int main()
  14. {
  15.     srand((unsigned int)time(NULL));
  16.     int num;
  17.     List list;
  18.     list.Create(rand() % 100);
  19.    
  20.     for(int i = 0; i < 50; i++)
  21.     {
  22.         list.Add(rand() % 100);
  23.     }
  24.     cout << "Generated list: " << endl;
  25.     list.Print();
  26.     cout << "Input number to find in list: ";
  27.     cin >> num;
  28.     cout << "Element " << num << " ";
  29.  
  30.     if(list.Find(num))
  31.         cout << "found" << endl;
  32.     else
  33.         cout << "not found" << endl;
  34.  
  35.     _getch();
  36.     return 0;
  37. }
  38.  
  39. List.cpp
  40. #include "List.h"
  41.  
  42.  
  43. List::Node::Node(int value)
  44. {
  45.     this->data = value;
  46. }
  47. List::List()
  48. {
  49.     created = false;
  50. }
  51.  
  52. bool List::isCreated()
  53. {
  54.     return created;
  55. }
  56.  
  57. void List::Create(int _data)
  58. {
  59.     // Esli spisok eshe ne sozdan
  60.     if(!isCreated())
  61.     {
  62.         pBeg = new Node(_data);
  63.         pBeg->next = NULL;
  64.        
  65.         created = true;
  66.     }
  67.     else
  68.         Add(_data);
  69. }
  70.  
  71. List::~List()
  72. {
  73.     // Udaleniye spiska iz pamyati
  74.     while(pBeg)
  75.     {
  76.         Node* prev = pBeg;
  77.         pBeg = pBeg->next;
  78.         delete prev;
  79.     }
  80. }
  81. // Pechat' spiska na ekran
  82. void List::Print()
  83. {
  84.     Node *counter = pBeg;
  85.     while(counter)
  86.     {
  87.         std::cout << counter->data << " ";
  88.         counter = counter->next;
  89.     }
  90.     std::cout << std::endl;
  91. }
  92.  
  93. void List::Add(int _data)
  94. {
  95.     Node *newNode = new Node(_data);
  96.     newNode->next = NULL;
  97.     Node *counter = pBeg;
  98.     while(counter->next)
  99.         counter = counter->next;
  100.     counter->next = newNode;
  101. }
  102.  
  103. // fakt sushestvovaniya elementa v spiske
  104. bool List::Find(int key)
  105. {
  106.     Node * counter = pBeg;
  107.     // Poka shetckik sushestvuet
  108.     while(counter)
  109.     {
  110.         if(counter->data == key)
  111.         {
  112.             return true;
  113.         }
  114.         counter = counter->next;
  115.     }
  116.     return false;
  117. }
  118.  
  119. List.h
  120. #pragma once
  121.  
  122. #include <iostream>
  123.  
  124. // List class.
  125. class List
  126. {
  127. public:
  128.     // Konstruktor (pustoy)
  129.     List(void);
  130.     // Destruktor (obyazatelen - pamyat nado ochishat')
  131.     ~List(void);
  132.    
  133.     struct Node
  134.     {
  135.         int data;
  136.         // Ukazatel' na sleduyushy element
  137.         Node *next;
  138.         // Konstruktor elementa spiska
  139.         Node(int);
  140.     }*pBeg;
  141.    
  142.     // Nachal'noe formirovaniye spiska - vstavka pervogo elementa
  143.     void Create(int);
  144.     bool isCreated();
  145.     void Print();
  146.     // Dobavleniye v konez spiska
  147.     void Add(int);
  148.    
  149.     // Funkziya poiska
  150.     bool Find(int);
  151.    
  152. private:
  153.     // flag proverki na sozdanie spiska
  154.     bool created;
  155. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement