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

Создать линейный однонаправленный список из вещественных чисел

28.12.2017, 00:29. Показов 5902. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1. Создать линейный однонаправленный список из вещественных чисел. Вставить в список первый отрицательный элемент перед каждым числом, равным 20 (если таких нет, оставить список без изменения).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2017, 00:29
Ответы с готовыми решениями:

Создать линейный однонаправленный список из целых чисел
Создать линейный однонаправленный список из целых чисел. Удалить из списка первый четный элемент,...

Создать линейный однонаправленный список из целых чисел
Создать линейный однонаправленный список из целых чисел. Определить среднее арифметическое значений...

Создать линейный однонаправленный список из целых чисел. Определить среднее арифметическое значений всех элементов
Создать линейный однонаправленный список из целых чисел. Опреде- лить среднее арифметическое...

Создать линейный односвязный список из вещественных чисел. Удалить из списка элемент перед каждым элементом со значен
Создать линейный односвязный список из вещественных чисел. Удалить из списка элемент перед каждым...

1
Эксперт Pascal/Delphi
6811 / 4568 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
28.12.2017, 18:15 2
Лучший ответ Сообщение было отмечено DaureN051 как решение

Решение

Взято отсюда: Динамические структуры данных (списки, очереди, стеки, деревья)

Pascal
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
program Spisok;
 
type
  Tinf = real;{тип данных, который будет храниться в элементе списка}
  List = ^TList;{Указатель на элемент типа TList}
  TList = record {А это наименование нашего типа "запись" обычно динамические структуры описываются через запись}
    data: TInf;  {данные, хранимые в элементе}
    next: List;   {указатель на следующий элемент списка}
  end;
 
{Процедура добавления нового элемента в односвязный список}
procedure AddElem(var spis1: List; znach1: TInf);
var
  tmp: List;
begin
  if spis1 = nil then {Проверяем не пуст ли список, если пуст, то }
  begin
    New(spis1);
    tmp := spis1;
  end
  else {в случае если список не пуст}
  begin
    tmp := spis1;
    while tmp^.next <> nil do
      tmp := tmp^.next; {ставим tmp на последний элемент списка}
    New(tmp^.next);
    tmp := tmp^.next;   {переносим tmp на новый элемент}
  end;
  tmp^.next := nil; {зануляем указатель}
  tmp^.data := znach1; {заносим значение}
end;
 
{процедура печати списка
полностью расписана при работе со стеком}
procedure Print(spis1: List);
begin
  if spis1 = nil then
  begin
    writeln('Список пуст.');
    exit;
  end;
  while spis1 <> nil do
  begin
    Write(spis1^.data, ' ');
    spis1 := spis1^.next
  end;
end;
 
{процедура удаления списка
 полностью расписана при работе со стеком}
procedure FreeStek(spis1: List);
var
  tmp: List;
begin
  while spis1 <> nil do
  begin
    tmp := spis1;
    spis1 := spis1^.next;
    Dispose(tmp);
  end;
end;
 
{процедура поиска в списке
 полностью расписана при работе со стеком}
function SearchElemZnach(spis1: List; znach1: TInf): List;
begin
  if spis1 <> nil then
    while (Spis1 <> nil) and (znach1 <> spis1^.data) do
      spis1 := spis1^.next;
  SearchElemZnach := spis1;
end;
 
{процедура удаления элемента
 полностью расписана при работе со стеком}
procedure DelElem(var spis1: List; tmp: List);
var
  tmpi: List;
begin
  if (spis1 = nil) or (tmp = nil) then
    exit;
  if tmp = spis1 then
  begin
    spis1 := tmp^.next;
    Dispose(tmp);
  end
  else
  begin
    tmpi := spis1;
    while tmpi^.next <> tmp do
      tmpi := tmpi^.next;
    tmpi^.next := tmp^.next;
    Dispose(tmp);
  end;
end;
 
{процедура удаления элемента по значению
 полностью расписана при работе со стеком}
procedure DelElemZnach(var Spis1: List; znach1: TInf);
var
  tmp: List;
begin
  if Spis1 = nil then
  begin
    Writeln('Список пуст');
    exit;
  end;
  tmp := SearchElemZnach(spis1, znach1);
  if tmp = nil then
  begin
    writeln('Элемент с искомым значением ', znach1, ' отсутствует в списке.');
    exit;
  end;
  DelElem(spis1, tmp);
  Writeln('Элемент удалён.');
end;
 
{процедура удаления элемента по позиции
 полностью расписана при работе со стеком}
procedure DelElemPos(var spis1: List; posi: integer);
var
  i: integer;
  tmp: List;
begin
  if posi < 1 then
    exit;
  if spis1 = nil then
  begin
    Write('Список пуст');
    exit
  end;
  i := 1;
  tmp := spis1;
  while (tmp <> nil) and (i <> posi) do
  begin
    tmp := tmp^.next;
    inc(i)
  end;
  if tmp = nil then
  begin
    Writeln('Элемента с порядковым номером ', posi, ' нет в списке.');
    writeln('В списке всего ', i - 1, ' элемента(ов).');
    exit
  end;
  DelElem(spis1, tmp);
  Writeln('Элемент удалён.');
end;
 
var
  l, Spis, tmpl: List;
  znach: real;
  k, n, i: integer;
  f: file of real;
 
begin
  Spis := nil;
  tmpl := nil;
  write('Введите количество добавляемых элементов: ');
  readln(n);
  for i := 1 to n do
  begin
    write('Введите значения добавляемых элементов: ');
    readln(znach);
    AddElem(Spis, znach);
  end;
  write('Исходный список: ');
  Print(Spis);
  l := spis;
  writeln;
  i := 0;
  k := -1;
  while spis <> nil do
  begin
    if spis^.data < 0 then
    begin
      k := i;
      znach := spis^.data;
      break;
    end;
    spis := spis^.next;
    inc(i);
  end;
  {  write('Список l: ');
    Print(l);}
  if k < 0 then
  begin
    writeln('Нет таких элементов');
    exit;
  end
  else
  begin
    writeln('Первый отрицательный элемент: ', znach, ' в позиции: ', k + 1);
    while l <> nil do
    begin
      if l^.data = 20 then
        AddElem(tmpl, znach);
      AddElem(tmpl, l^.data);
      l := l^.next;
    end;    
  end;
  write('Полученный список: ');
  Print(tmpl);
  FreeStek(Spis);
end.
0
28.12.2017, 18:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2017, 18:15
Помогаю со студенческими работами здесь

Опишите и постройте через двумерный массив Sps линейный однонаправленный список из семи целых чисел и сделайте этот список пустым
Сама задача: Опишите и постройте с помощью двумерного массива Sps линейный однонаправленный список...

Запись действительных чисел из файла в линейный однонаправленный список
помогите написать код на запись действительных чисел из файла в линейный однонаправленный список

Реализовать линейный однонаправленный список на базе массива целых чисел
1.Дан одномерный массив случайным образом заданных целых чисел. Из элементов массива построить...

Создать линейный однонаправленный список строк. Удалить из списка первую строку, заканчивающуюся на цифру
Создать линейный однонаправленный список строк. Удалить из списка первую строку, заканчивающуюся...


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

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

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