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

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

14.06.2017, 11:49. Показов 4759. Ответов 1

Author24 — интернет-сервис помощи студентам
Уважаемые программисты, помогите, пожалуйста, с кодом. Поиском эту задачу нашла только на С++, а вот на Паскале не увидела.

Построить линейный список из входной последовательности чисел. Перестроить его так, чтобы сначала стояли все отрицательные числа, затем все положительные.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2017, 11:49
Ответы с готовыми решениями:

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

Построить односвязный список из входной последовательности чисел и вывести её в порядке не убывания
Построить односвязный список из входной последовательности чисел и вывести ее в порядке не убывания.

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

Отсортировать линейный список натуральных чисел в порядке возрастания
Помогите, пожалуйста, с решением задачи. Задача: Нужно отсортировать линейный список...

1
Модератор
9854 / 5224 / 3304
Регистрация: 17.08.2012
Сообщений: 15,982
21.06.2017, 13:37 2
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Не смотрели. Работа со связным списком взята отсюда: Динамические структуры данных (списки, очереди, стеки, деревья).
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
type Tinf = integer; {тип данных, который будет храниться в элементе списка}
     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
      GetMem(spis1, sizeof(TList)); {создаём его первый элемент}
      tmp := spis1
    end
    else begin {в случае если список не пуст}
      tmp := spis1;
      while tmp^.next <> nil do tmp := tmp^.next; {ставим tmp на последний элемент списка}
      GetMem(tmp^.next, sizeof(TList)); {создаём следующий элемент}
      tmp := tmp^.next   {переносим tmp на новый элемент}
    end;
  tmp^.next := nil; {зануляем указатель}
  tmp^.data := znach1 {заносим значение}
end;
 
{процедура печати списка}
procedure Print(s: string; spis1: List);
begin
  writeln(s);
  if spis1 = nil {проверка на пустоту списка}
    then begin
      write('Список пуст.');
      exit
    end;
  while spis1 <> nil do {пока указатель spis1 не станет указывать в пустоту}
    begin   {а это произойдёт как только он перейдёт по ссылке последнего элемента}
      Write(spis1^.data:10); {выводить данне}
      spis1 := spis1^.next  {и переносить указатель на следующий элемент}
    end;
  writeln
end;
 
{процедура удаления списка}
Procedure FreeList(spis1: List);
var tmp: List;
begin
  while spis1 <> nil do {пока spis1 не станет указывать в "пустоту" делать}
    begin
      tmp := spis1; {указатель tmp направим на текущий первый элемент}
      spis1 := spis1^.next; {указатель перенесём на следующий элемент}
      FreeMem(tmp, SizeOf(Tlist)) {освободим память, занятую под текущий первый элемент}
    end
end;
 
{процедура перестроения списка}
procedure SortList(spis1: List);
var tmp, negative, positive: List;
begin
  if spis1 = nil then exit; {если список пуст, то сортировать его незачем}
  tmp := spis1; {указатель на начало списка}
  negative := nil; {список отрицательных элементов, пока пустой}
  positive := nil; {список положительных элементов, пока пустой}
  while tmp <> nil do
    begin
      if tmp^.data < 0 {если элемент отрицательный,}
        then AddElem(negative, tmp^.data)  {то добавляем его в список отрицательных элементов,}
        else AddElem(positive, tmp^.data); {иначе добавляем его в список положительных элементов}
      tmp := tmp^.next {перемещаем указатель на следующий элемент}
    end;
  tmp := spis1; {указатель на начало списка}
  {копируем списки}
  while negative <> nil do
    begin
      tmp^.data := negative^.data;
      tmp := tmp^.next;
      negative := negative^.next
    end;
  while positive <> nil do
    begin
      tmp^.data := positive^.data;
      tmp := tmp^.next;
      positive := positive^.next
    end
end;
 
var Spis: List;
    znach: integer;
begin
  Spis := nil;
  writeln('Введите элементы списка (целые числа), окончание ввода - число 0');
  repeat
    write('? ');
    readln(znach);
    if znach <> 0 then AddElem(Spis, znach)
  until znach = 0;
  Print('Исходный список:', Spis);
  SortList(Spis);
  Print('Перестроенный список:', Spis);
  FreeList(Spis);
  readln
end.
0
21.06.2017, 13:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2017, 13:37
Помогаю со студенческими работами здесь

Построить линейный список из входной последовательности чисел и перестроить его
Задание выполнить, применяя списки двух видов: стека и очереди. Построить линейный список из...

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

Построить линейный список из входной последовательности чисел. Перестроить его так, чтобы сначала стояли все четные числ
Построить линейный список из входной последовательности чисел. Перестроить его так, чтобы сначала...

Исправить код линейный список из входной последовательности чисел
Буду благодарен, за помощь. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #define...


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

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

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