3 / 3 / 0
Регистрация: 16.11.2016
Сообщений: 66
1

Реализуйте однонаправленный список

05.12.2016, 14:47. Показов 801. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните пожалуйста, что происходит в определённой строке.Хотя бы подскажите в каких строчках происходит добавление элементов, просмотр содержимого. удаление элементов.
Реализуйте однонаправленный список. Необходимо предусмотреть режим сортировки элементов списка без перестановки самих элементов.
Реализуйте задание согласно варианту. В каждом из вариантов должно быть реализованы следующие режимы работы:

· добавление элементов;

· просмотр содержимого;

· удаление элементов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <stdbool.h>
struct listelem
{
  int el;
  struct listelem* next;
};
struct listelem* stackstart;
struct listelem* stackend;
 
void addel(int cr)
{
  int i;
  if (stackend!=NULL)
  {
      stackend->next = (struct listelem*)malloc(sizeof(struct listelem));
      stackend = stackend->next;
      stackend->el = cr;
      stackend->next = NULL;
  }
  else
  {
      stackend = (struct listelem*)malloc(sizeof( struct listelem));
      stackend->el = cr;
      stackend->next = NULL;
      stackstart = stackend;
  }
}
 
void deleteel(int cr)
{  
  struct listelem* cur = stackstart;
  if (cur->el == cr)
  {
      stackstart = stackstart->next;
      free(cur);
      return;
  }
  while ((cur->next->next != NULL) && (cur->next->el != cr))
  {
      cur = cur->next;
  }
  if (cur->next->el==cr)
  {
      struct listelem* tmp = cur->next;
      cur->next = cur->next->next;
      free(tmp);
  }
}
void sortel(void)
{
  struct listelem* cur;
  int tmp;
  bool changed = true;
  while (changed)
  {
      changed = false;
      cur = stackstart;
      while (cur->next!=NULL)
      {
           if (cur->el > cur->next->el)
           {
               tmp=cur->el;
               cur->el=cur->next->el;
               cur->next->el=tmp;
               changed=true;
           }
      cur=cur->next;
      }
  }
}
 
void showall(void)
{
    struct listelem* cur = stackstart;
    while (cur != NULL)
    {
        printf("%d\t", cur->el);
        cur=cur->next;
    }
}
 
int main(void)
{  
  setlocale(LC_ALL,"RU");
  struct listelem book;
  int k, n, i, answer;
  do
  {
      printf("Выберите действие (1) - добавить,(2)-удалить,(3)-сортировать, (4) - показать все: ");
      scanf("%d",&answer);
      switch (answer)
      {
          case 1:
          {
              printf( "Введите число для добавления ");
              scanf("%d",&k);
              addel(k);
          }
      break;
      case 2:
      {
          printf("Введите число для удаления: ");
          scanf("%d",&k);
          deleteel(k);
      }
      break;
      case 3:
      {
          sortel();
      }
      break;
      case 4:
      {
          showall();
      }
      break;
      }
  }while ((answer > 0) && (answer < 5));    
return (0);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2016, 14:47
Ответы с готовыми решениями:

Реализуйте однонаправленный циклический список. Необходимо предусмотреть режим сортировки элементов списка без перестано
Реализуйте задание согласно варианту. В каждом из вариантов должно быть реализованы следующие...

Реализуйте однонаправленный список.Режим сортировки элементов списка без перестановки самих элементов
Реализуйте задание .В каждом из вариантов должно быть реализованы следующие режимы работы:...

Добавить в список элемент после элемента с заданным инф.полем [Однонаправленный список]
Вообщем есть: Функция создание списка Функции вывода на экран Функция добавление элемента с...

Реализуйте двунаправленный список
Реализуйте двунаправленный список. Подскажите в чём ошибка #include&lt;iostream&gt; #include&lt;stdio.h&gt;...

1
2670 / 2245 / 240
Регистрация: 03.07.2012
Сообщений: 8,156
Записей в блоге: 1
05.12.2016, 15:53 2
Цитата Сообщение от marina_petrova Посмотреть сообщение
printf( "Введите число для добавления ");
* * * * * * * scanf("%d",&k);
* * * * * * * addel(k);
Такие строки не наводят на мысли? Нет - тогда С++, боюсь, на для Вас
0
05.12.2016, 15:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2016, 15:53
Помогаю со студенческими работами здесь

Однонаправленный список
Доброго времени суток! Помогите поправить программу(Однонаправленный список, удалить все...

Однонаправленный список
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; struct Node { int data; Node*...

Однонаправленный список
Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и...

Однонаправленный Список
Как написать ф-ю добавления в конец элемента в однонаправленном списке?

однонаправленный список
чем отличаеться point *p; p=new(point); от p=new point; ???

однонаправленный список
point* make_point( int n) { point *begin,*posl; posl=NULL; int i; for(i=0;i&lt;n;i++) {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru