Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. #include "MyString2.h"
  2.  
  3.  
  4. void MyString2::append(char p_data)
  5. {
  6. CharListenKnoten* LetzterEintrag = new CharListenKnoten;
  7. LetzterEintrag->set_data(p_data);
  8. LetzterEintrag->set_next(nullptr);
  9. if (anker == nullptr)
  10. {
  11. anker = LetzterEintrag;
  12. }
  13. else
  14. {
  15. CharListenKnoten* ptr = get_anker();
  16. while (ptr->get_next() != nullptr)
  17. {
  18. ptr = ptr->get_next();
  19. }
  20. ptr->set_next(LetzterEintrag);
  21. }
  22. };
  23. void MyString2::delete_all()
  24. {
  25. CharListenKnoten* ptr = get_anker();
  26. if (get_anker() == nullptr)
  27. {
  28.  
  29. }
  30. else
  31. {
  32. while (ptr->get_next() != nullptr)
  33. {
  34. CharListenKnoten* ptr2 = ptr;
  35. ptr = ptr->get_next();
  36. delete(ptr2);
  37. }
  38. delete(ptr);
  39. set_anker(nullptr);
  40. }
  41. };
  42. CharListenKnoten* MyString2::deep_copy() const
  43. {
  44. /*if (anker == nullptr)
  45. {
  46. return nullptr;
  47. }
  48. else
  49. {
  50. CharListenKnoten* rueckgabe = nullptr;
  51. CharListenKnoten* ptr = anker;
  52. while (ptr->get_next() != nullptr)
  53. {
  54. CharListenKnoten* copy = new CharListenKnoten;
  55. copy->set_data(ptr->get_data());
  56. copy->set_next(ptr->get_next());
  57. if (ptr == anker)
  58. {
  59. rueckgabe = copy;
  60. }
  61. ptr = ptr->get_next();
  62. }
  63. CharListenKnoten* copy = new CharListenKnoten;
  64. copy->set_data(ptr->get_data());
  65. copy->set_next(nullptr);
  66. return rueckgabe;
  67. }*/
  68. if (anker == nullptr) {
  69. return nullptr;
  70. }
  71. else {
  72. CharListenKnoten* copy_anker = new CharListenKnoten(anker->get_data(), nullptr), * copy_ptr = copy_anker, * ptr = anker;
  73.  
  74. while (ptr->get_next() != nullptr)
  75. {
  76. ptr = ptr->get_next();
  77. copy_ptr->set_next(new CharListenKnoten(ptr->get_data(), nullptr));
  78. copy_ptr = copy_ptr->get_next();
  79. }
  80.  
  81. return copy_anker;
  82. }
  83.  
  84. };
  85. /*MyString2::MyString2(std::string AmArsch)
  86. {
  87. for (int i = 0; i < AmArsch.length(); i++)
  88. {
  89. CharListenKnoten* neuerEintrag = new CharListenKnoten(AmArsch.at(i), nullptr);
  90.  
  91. if (get_anker() == nullptr)
  92. {
  93. set_anker(neuerEintrag);
  94. }
  95. else
  96. {
  97. CharListenKnoten* ptr = get_anker();
  98.  
  99. while (ptr->get_next() != nullptr)
  100. {
  101. ptr = ptr->get_next();
  102. }
  103. ptr->set_next(neuerEintrag);
  104. }
  105. }
  106. };*/
  107. /*MyString2::MyString2(const string& eingabe)
  108. {
  109. if (eingabe != "")
  110. {
  111. anker = new CharListenKnoten(eingabe.at(0), nullptr);
  112. CharListenKnoten * ptr = anker;
  113. for (int i = 1; i < eingabe.length(); i++) {
  114. ptr->set_next(new CharListenKnoten(eingabe.at(i), nullptr));
  115. ptr = ptr->get_next();
  116. }
  117. }
  118. else MyString2();
  119. };*/
  120. /*Flos Operator
  121. MyString2& MyString2::operator=(const MyString2& str) {
  122. delete_all();
  123. anker = str.deep_copy();
  124. return *this;
  125. };*/
  126. MyString2::MyString2(const std::string& str)
  127. : anker(nullptr) {
  128. if (str.empty()) {
  129. anker = new CharListenKnoten(0, nullptr);
  130. return;
  131. }
  132.  
  133. CharListenKnoten* ptr = new CharListenKnoten(str.at(0), nullptr);
  134. anker = ptr;
  135. for (std::size_t i = 1; i < str.size(); ++i) {
  136. ptr->set_next(new CharListenKnoten(str.at(i), nullptr));
  137. ptr = ptr->get_next();
  138. }
  139. };
  140. MyString2::MyString2(const MyString2& orig) {
  141. if (orig.anker == nullptr) {
  142. this->anker = nullptr;
  143. }
  144. else this->set_anker(orig.deep_copy());
  145. };
  146. MyString2& MyString2::operator = (const MyString2& orig) {
  147. this->delete_all();
  148. if (orig.anker == nullptr) {
  149. this->delete_all();
  150. }
  151. else this->set_anker(orig.deep_copy());
  152. return *this;
  153. };
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163. unsigned int MyString2::length() const {
  164. if (!anker)
  165. return 0;
  166. unsigned int count = 0;
  167. for (CharListenKnoten* ptr = anker; ptr; ptr = ptr->get_next()) {
  168. count++;
  169. }
  170. return count;
  171. };
  172. char MyString2::at(unsigned int pos) const {
  173. unsigned int count = 0;
  174. CharListenKnoten* ptr = anker;
  175. while (ptr) {
  176. if (count == pos)
  177. return ptr->get_data();
  178. ptr = ptr->get_next();
  179. ++count;
  180. }
  181. return '\0';
  182. };
  183.  
  184. MyString2 MyString2::operator+(char c) const {
  185. MyString2 s(*this);//(*this);
  186. s.append(c);
  187. return s;
  188. };
  189.  
  190. std::string MyString2::to_string() const {
  191. std::string s;
  192. if (!anker)
  193. return s;
  194. CharListenKnoten* ptr = anker;
  195. while (ptr) {
  196. s += ptr->get_data();
  197. ptr = ptr->get_next();
  198. }
  199. return s;
  200. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement