Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. //300007
  8.  
  9. struct list{
  10. int element;
  11. list* next;
  12. };
  13.  
  14. struct set{
  15. list* a[300007];
  16. set(){
  17. for (int i = 0; i < 300007; i++)
  18. a[i] = nullptr;
  19. }
  20.  
  21. void Insert(int el){
  22. list *findEl = a[abs(el) % 300007];
  23. list *prevEl = findEl;
  24. while (findEl != nullptr && findEl->element != el) {
  25. prevEl = findEl;
  26. findEl = findEl->next;
  27. }
  28. if (findEl == nullptr) {
  29. list *newElement = new list;
  30. newElement->next = nullptr;
  31. newElement->element = el;
  32. if (prevEl == nullptr) {
  33. a[abs(el) % 300007] = newElement;
  34. }
  35. else {
  36. prevEl->next = newElement;
  37. }
  38. }
  39. }
  40.  
  41. int Exists(int el) {
  42. list *findEl = a[abs(el) % 300007];
  43. while (findEl != nullptr && findEl->element != el) {
  44. findEl = findEl->next;
  45. }
  46. if (findEl != nullptr && findEl->element == el)
  47. return 1;
  48. else
  49. return 0;
  50. }
  51.  
  52. void Delete(int el){
  53. list* findEl = a[abs(el) % 300007];
  54. list* prevEl = a[abs(el) % 300007];
  55. int flag = 1;
  56. while(findEl != nullptr && findEl -> element != el){
  57. prevEl = findEl;
  58. findEl = findEl -> next;
  59. }
  60. if (findEl != nullptr && findEl -> element == el){
  61. if (findEl == a[abs(el) % 300007])
  62. a[abs(el) % 300007] = findEl -> next;
  63. else
  64. prevEl -> next = findEl -> next;
  65. delete(findEl);
  66. }
  67. }
  68. };
  69.  
  70.  
  71. int main(){
  72. ifstream in;
  73. ofstream out;
  74. in.open("set.in");
  75. out.open("set.out");
  76. set Set;
  77. while(!in.eof()){
  78. string com;
  79. int element;
  80. in >> com;
  81.  
  82. if (com.size() == 0)
  83. break;
  84. in >> element;
  85. if (com == "insert"){
  86. Set.Insert(element);
  87. }
  88. if (com == "exists"){
  89. if(Set.Exists(element))
  90. out << "true\n";
  91. else
  92. out << "false\n";
  93. }
  94. if (com == "delete"){
  95. Set.Delete(element);
  96. }
  97. }
  98. in.close();
  99. out.close();
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement