Advertisement
Guest User

lab2

a guest
Oct 23rd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <time.h>
  5.  
  6. using namespace std;
  7.  
  8. class Node{
  9. public:
  10. int key;
  11. double d;
  12. char c;
  13.  
  14. Node *next; //wskaznik na nasepny element
  15. Node();
  16. };
  17.  
  18. Node::Node(){
  19. next = 0; //konstruktor
  20. }
  21. class List{
  22. public:
  23. Node *head, *tail; //wskaznik na poczatek,koniec listy
  24. /*1*/ void add_node(int key);//przypadek w ktorym jest juz taki key(ma wyswietlic blad)
  25. /*2*/ void add_X_node(int quantity);
  26. /*3*/ void find_node(int key);//przypadek w ktorym element nie istnieje
  27. /*4*/ void remove_node(int key);//przypadek w ktorym element nie istnieje
  28. /*5*/ void show_Y_nodes(int quantity);//wyswietla tylko key od poczatku listy
  29. /*6*/ void show_Z_nodes(int quantity);//wyswietla tylko key od konca listy
  30. /*7*/ int how_much_nodes();//wyswietla ilosc wezlow na liscie (moze byc dodatkowa zmienna)
  31. /*8*/ void remove_all_nodes();
  32.  
  33. List();
  34. };
  35.  
  36. List::List(){
  37. head = 0; //konstruktor
  38. tail = 0;
  39. }
  40. /*sprawdzanie czy juz istnieje wezel o danym kluczu-key
  41. void check(int key) {
  42. if(key==true){
  43. cout<<"BLAD! Juz istnieje wezel o takie wastorsci kluczowej! "<<endl;
  44. } else {
  45. List::add_node(key);
  46. }
  47. }
  48. */
  49. //1 (brak sprawdzenia czy juz istnieje wezel o danym kluczu-key)
  50. void List::add_node(int key){
  51. time_t czas;
  52. srand(time(&czas));
  53. Node *nowa = new Node;
  54. nowa->key = key;
  55. nowa->d = rand()%10000 - 1000;
  56. nowa->c = 'T';
  57.  
  58. if(head==0){ //sprawdzenie czy to pierwszy element listy
  59. head = nowa;//jezeli tak to nowy element jest teraz poczatkim listy
  60. }
  61. else{
  62. //w przeiwnym wypadku wedrujemy na koniec listy
  63. Node *temp = head;
  64. while(temp->next){
  65. temp = temp->next;
  66. }
  67. temp->next = nowa;//ostatni element wskazuje na nasz nowy
  68. nowa->next = 0; //ostatni nie wskazuje nic
  69. }
  70. }
  71. //2
  72. void List::add_X_node(int quantity){
  73. List *temp = new List;
  74. time_t czas;
  75. srand(time(&czas));
  76. for(int i = 1; i<=quantity; i++){
  77. int k = rand()%99900+99;
  78. temp->add_node(k);
  79. }
  80. }
  81.  
  82. //3
  83. void List::find_node(int key) {
  84. Node *temp = new Node;
  85. while(temp) {
  86. if(temp->key == key){
  87. cout<<"jest"<<endl;
  88. } else {
  89. cout<<"niema"<<endl;
  90. }
  91. }
  92. }
  93.  
  94. //4 usuwanie wskaznika bez usuniecia obiektu
  95. void List::remove_node(int key){
  96. if(key==1){
  97. Node *temp = head;
  98. head = temp->next;
  99. }
  100. if(key>=2){
  101. int j = 1;
  102. Node *temp = head;
  103. while(temp){
  104. if((j+1)==key) break;
  105. temp = temp->next;
  106. j++;
  107. }
  108. if(temp->next->next==0){
  109. temp->next = 0;
  110. }else{
  111. temp->next = temp->next->next;
  112. }
  113. }
  114. }
  115. //5
  116. void List::show_Y_nodes(int quantity){
  117. Node *temp = head; //wskaznik na pierwszy element
  118. for(int i=0; i<quantity; i++){ //przewijamy wskaznik na nastepne elementy
  119. cout<<temp->key<<endl;
  120. temp = temp->next;
  121. }
  122. }
  123.  
  124. //6
  125. void List::show_Z_nodes(int quantity){
  126.  
  127. }
  128.  
  129. //7
  130. int List::how_much_nodes(){
  131.  
  132. }
  133.  
  134. //8
  135. void List::remove_all_nodes(){
  136.  
  137. }
  138. int main()
  139. {
  140.  
  141. List *baza = new List;
  142. baza->add_node(1);
  143. baza->add_node(2);
  144. baza->add_node(3);
  145. baza->add_X_node(2);
  146. baza->show_Y_nodes(2);
  147. baza->find_node(2);
  148. baza->remove_node(3);
  149. baza->show_Y_nodes(3);
  150. /*
  151. baza->add_node(1);
  152. baza->add_node(2);
  153. baza->show_Y_nodes(3);
  154. cout<< baza->head->key<<"|"<<baza->head->c<<"|"<<baza->head->d<<endl;
  155. cout<<baza->head->next->key<<"|"<<baza->head->next->c<<"|"<<baza->head->next->d<<endl;
  156. cout<<baza->head->next->next->key<<endl;
  157. */
  158. /*
  159. ifstream file("inlab02.txt", ios::in);
  160. int x,k1,k2,k3,k4,k5;
  161. if(!file)
  162. {
  163. cerr << "Cant open" << endl;
  164. }
  165. file>>x>>k1>>k2>>k3>>k4>>k5;
  166. file.close();
  167.  
  168. clock_t begin, end;
  169. double time_spent;
  170. begin = clock();
  171. // ****
  172. List *baza = new List;
  173. baza->find_node(k1);
  174. baza->add_X_node(x);
  175. baza->how_much_nodes();
  176. baza->show_Y_nodes(20);
  177. baza->add_node(k2);
  178. baza->show_Y_nodes(20);
  179. baza->add_node(k3);
  180. baza->show_Y_nodes(20);
  181. baza->add_node(k4);
  182. baza->show_Y_nodes(20);
  183. baza->add_node(k5);
  184. baza->remove_node(k3);
  185. baza->show_Y_nodes(20);
  186. baza->remove_node(k2);
  187. baza->show_Y_nodes(20);
  188. baza->remove_node(k5);
  189. baza->how_much_nodes();
  190. baza->find_node(k5);
  191. baza->show_Z_nodes(11);
  192. baza->how_much_nodes();
  193. baza->remove_all_nodes();
  194.  
  195. // ****
  196. end = clock();
  197. time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
  198. cout<<"Czas: "<<time_spent<<endl;
  199. cout<<"-------------------------------------"<<endl;
  200.  
  201. */
  202.  
  203. return 0;
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement