Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. // 2 февраль.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. struct Single_node {
  10. int val;
  11. Single_node *next;
  12. };
  13.  
  14. class Single_list {
  15. private:
  16. Single_node *head;
  17. Single_node *tail;
  18. public:
  19. Single_list(); //+
  20. Single_list(int); //+
  21. ~Single_list();
  22. bool empty(); //+
  23. void push_front(int); //+
  24. void pop_front(); //+
  25. void clear();
  26. int& front();//+
  27. int size(); //+
  28. void print(); //+
  29. };
  30.  
  31. Single_list::Single_list() {
  32. Single_node *p = new Single_node;
  33. p->next = 0; tail = p; head = p;
  34. }
  35.  
  36. Single_list::Single_list(int a) {
  37. Single_node *p = new Single_node;
  38. p->next = 0; tail = p;
  39. Single_node *node = new Single_node;
  40. node->val = a; node->next = tail; head = node;
  41. }
  42.  
  43. Single_list::~Single_list() {
  44. while (head != 0) {
  45. Single_node *node = head;
  46. head = head->next;
  47. delete node;
  48. }
  49. }
  50.  
  51. bool Single_list::empty() {
  52. return (tail == head);
  53. }
  54.  
  55. void Single_list::push_front(int a) {
  56. Single_node *node = new Single_node;
  57. node->val = a; node->next = head;
  58. head = node;
  59. }
  60.  
  61. void Single_list::pop_front() {
  62. Single_node *node = head->next;
  63. delete head;
  64. head = node;
  65. }
  66.  
  67. void Single_list::clear() {
  68. while (head != tail) {
  69. Single_node *node = head->next;
  70. delete head;
  71. head = node;
  72. }
  73. }
  74.  
  75. int& Single_list::front() {
  76. int &p = head->val;
  77. return p;
  78. }
  79.  
  80. void Single_list::print() {
  81. for (Single_node *node = head; node != tail; node = node->next)
  82. cout << node->val << " ";
  83. cout << endl;
  84. }
  85.  
  86. int Single_list::size() {
  87. int n = 0;
  88. for (Single_node *node = head; node != tail; node = node->next)
  89. n++;
  90. return n;
  91. }
  92.  
  93. int main()
  94. {
  95. Single_list list;
  96. for (int i = 0; i < 5; i++) {
  97. list.push_front(i);
  98. list.print();
  99. }
  100. list.front() = 9;
  101. while (!list.empty()) {
  102. list.print();
  103. list.pop_front();
  104. }
  105. return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement