ChameL1oN

Лаба2_1(33 вар.)

Mar 29th, 2015
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. //Создать по типу очередь.
  8. //Тип информационного поля char*.
  9. //Добавить в список элементы с номерами 1, 3, 5 и т.д.
  10.  
  11.  
  12.  
  13. struct point{
  14. char* data = new char[10];
  15. point* next;
  16. };
  17.  
  18. void print_list(point* beg)
  19. //печать списка
  20. {
  21. point* p = beg;//начало списка
  22. while (p != 0)
  23. {
  24. cout << p->data << "\t";
  25. p = p->next;//переход к следующему элементу
  26. }
  27. }
  28.  
  29. point* make_list(int n)
  30. {
  31. point*beg;//указатель на первый элемент
  32. point*p, *r;//вспомогательные указатели
  33. beg = new(point);//выделяем память под первый элемент
  34. cout << "String : " << endl;
  35. cin >> beg->data;//вводим значение информационного поля
  36. beg->next = 0;//обнуляем адресное поле
  37. //ставим на этот элемент указатель p (последний элемент)
  38. p = beg;
  39. for (int i = 0; i<n - 1; i++)
  40. {
  41. r = new(point);//создаем новый элемент
  42. cout << "String : " << endl;
  43. cin >> r->data;
  44. r->next = 0;
  45. p->next = r;//связываем p и r
  46. //ставим на r указатель p (последний элемент)
  47. p = r;
  48. }
  49. return beg;//возвращаем beg как результат функции
  50. }
  51.  
  52. point* del_point(point*beg, int k)
  53. //удаление элемента с номером k из списка
  54. {
  55. point*p = beg;
  56. if (k == 0)//удаление первого элемента
  57. {
  58. beg = beg->next;
  59. delete p;
  60. return beg;
  61. }
  62. //проходим по списку до элемента с номером k-1
  63. for (int i = 1; i<k&&p->next != 0; i++)
  64. p = p->next;
  65. /*если такого элемента в списке нет, то возвращаем указатель на начало списка в качестве результата функции*/
  66. if (p->next == 0) return beg;
  67. point* r = p->next;//ставим указатель r на k-й элемент
  68. p->next = r->next;//связываем k-1 и k+1 элемент
  69. delete r;//удаляем k-й элемент из памяти
  70. return beg;
  71. }
  72.  
  73.  
  74. void main(){
  75. setlocale(LC_ALL, "rus");
  76. point* beg;
  77. int n;
  78. cout << "Count ?" << endl;
  79. cin >> n;
  80. beg = make_list(n);
  81. print_list(beg);
  82. point* p = beg;
  83. for (int i = 1; i < n/2+1 && p->next != NULL;i++){
  84. p = p->next;
  85. beg = del_point(beg,i);
  86.  
  87. }
  88. cout << endl;
  89. cout << "Список после обработки" << endl;
  90. print_list(beg);
  91. cout << endl;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment