Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <locale.h>
  4. #include <Windows.h>
  5.  
  6. using namespace std;
  7.  
  8. struct elm {
  9. int vl;
  10. elm *link;
  11. };
  12. struct list {
  13. elm *start, *ptr;
  14. };
  15. void moveptr(list *L) {
  16. if (!L->ptr->link) return;
  17. L->ptr = L->ptr->link;
  18. }
  19. void addelement(list *L, int vl) {
  20. elm *temp = (elm *)malloc(sizeof(elm));
  21. if (!temp) return;
  22. temp->vl = vl;
  23. temp->link = NULL;
  24. L->ptr->link = temp;
  25. }
  26.  
  27. void initl(list *L) {
  28. L->start = (elm *)malloc(sizeof(elm)); // Create first
  29. if (!L->start) return;
  30. L->start->link = NULL;
  31. L->ptr = L->start;
  32. }
  33. void remove_element(list *L) {
  34. elm *pntr = L->ptr; // След удаляем
  35. elm *del = L->ptr->link;
  36. L->ptr->link = del->link;
  37. free((void *)del);
  38. }
  39. void print(list *L) {
  40. // дополнительный элемент для прохода от начала до конца списка
  41. elm *tmp;
  42. tmp = L->start;
  43. while (tmp != NULL) {
  44. cout << tmp->vl << " "; // печать текущего элемента
  45. tmp = tmp->link; // переход на следующий элемент
  46. }
  47. cout << endl;
  48. }
  49. int main() {
  50. setlocale(LC_ALL, "rus");
  51.  
  52. list *L = (list *)malloc(0);
  53. initl(L); // Create new list
  54.  
  55. int exit = 1, m, vl, num, cc = 0;
  56. while (exit != 0) {
  57. system("cls");
  58. cout << "1.Добавить элемент в начало\n2.Добавить элемент после элемента\n3.Удалить элемент\n4.Вывод списка элементов\n5.Очистить и закрыть\n\n";
  59. cin >> m;
  60. switch (m) {
  61. case 1:
  62. system("cls");
  63. L->ptr = L->start;
  64. cout << "Enter value: ";
  65. cin >> vl;
  66. addelement(L, vl);
  67. cc++;
  68. break;
  69. case 2:
  70. system("cls");
  71. if (cc == 0) break;
  72. do {
  73. cout << "Номер элемента после которого добавить: ";
  74. cin >> num;
  75. } while (num < 1 || num > cc);
  76. for (int i = 0; i < num; i++) moveptr(L);
  77. cout << "Enter value: ";
  78. cin >> vl;
  79. addelement(L, vl);
  80. cc++;
  81. break;
  82. case 3:
  83. system("cls");
  84. do {
  85. cout << "Номер элемента для удаления: ";
  86. cin >> num;
  87. } while (num > cc);
  88. for (int i = 0; i < num-1; i++) moveptr(L);
  89. remove_element(L);
  90. cc--;
  91. break;
  92. case 4:
  93. system("cls");
  94. print(L);
  95. cout << "Exit? (1)";
  96. cin >> vl;
  97. break;
  98. case 5:
  99. exit = 0;
  100. break;
  101. }
  102. }
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement