С Новым годом! Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.12.2022
Сообщений: 107

Односвязный список

27.12.2022, 18:52. Показов 879. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужен код для генерации односвязного списка, целочисленной последовательности данных , генерируемых случайным образом из интервала значений [ -999, 999]. Алгоритм генерации списка нужно оформить в виде отдельной процедуры с параметрами.
Обязательной входной величиной в процедуре генерации списка является число n элементов списка.

Желательно, что б код был простым, без использования всяких непонятных штук для новичков
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2022, 18:52
Ответы с готовыми решениями:

Односвязный список на указателях
Всем привет. Создаю односвязный список на указателях, но в процессе где-то допустил ошибку: unit1.pas(43.9) Error:illigal expression ...

Односвязный список на указателях с метками начала и конца списка
Здравствуйте! У меня такое задание - создать односвязный список на указателях с метками начала и конца списка. Только начинаю...

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

8
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
28.12.2022, 09:30
Цитата Сообщение от agusha27334 Посмотреть сообщение
нужен код для генерации односвязного списка
внизу похожие темы ты уже посмотрел?

Цитата Сообщение от agusha27334 Посмотреть сообщение
Желательно, что б код был простым, без использования всяких непонятных штук для новичков
простым код не будет - односвязные списки строятся с использованием указателей и динамической памяти.
А уж понятно это "новичку" или нет - это уже проблемы "новичка"
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.12.2022, 09:40
Лучший ответ Сообщение было отмечено agusha27334 как решение

Решение

Нужен, так нужен. Оформить, так оформить.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
type
  PNode = ^TNode;
  TNode = record
    Data: Integer;
    Next: PNode;
  end;
 
procedure lstInitRnd(var lst: PNode; n: Integer);
var p: ^PNode;
begin
  p:=@lst;
  for n:=n-1 downto 0 do begin
    New(p^); 
    with p^^ do begin
      Data:=-999+Random(1999); p:=@Next;
    end;
  end;
  p^:=nil;
end;
2
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
28.12.2022, 10:28
bormant, не понял, а зачем указатель на указатель?
чем var p: PNode; не угодило?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.12.2022, 18:06
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
не угодило?
Напишите с var p: PNode;, сравните, давайте даже вместе сравним.
На самом деле отличаться будет только первый шаг.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
29.12.2022, 10:09
Цитата Сообщение от bormant Посмотреть сообщение
На самом деле отличаться будет только первый шаг.
если порядок добавления (в начало или конец) не важен, то я бы такой код написал:
Pascal
1
2
3
4
5
6
7
8
9
10
procedure lstInitRnd(var lst: PNode; n: Integer);
var p: PNode;
begin
  for n:=1 to n do begin
    New(p); 
    p^.Data:=-999+Random(1999);
    p^.Next:=lst;
    lst := p
  end;
end;
ну плюс этого кода в том, что его можно вызвать многократно - он будет добавлять новые элементы в начало списка (работать как стек)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
29.12.2022, 12:26
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
если порядок добавления (в начало или конец) не важен
Это другой алгоритм
Если бы вопрос был -- зачем тут последовательное заполнение вместо стека, то всё понятно стек проще, ему ^PNode не нужен.
Но Фиона-то не совсем огр? вопрос-то изначально был не про стек, а про ^PNode, и ответ был про ^PNode
0
0 / 0 / 0
Регистрация: 17.12.2022
Сообщений: 107
16.01.2023, 09:51  [ТС]
а при вызове процедуры мне к lst как обратиться ?Что нужно подставить будет?
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
16.01.2023, 10:22
Цитата Сообщение от agusha27334 Посмотреть сообщение
а при вызове процедуры мне к lst как обратиться ?Что нужно подставить будет?
не совсем понял, в чем у тебя проблема?

вот пример программы для тестирования:

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
{$mode objfpc}
 
type
  PNode = ^TNode;
  TNode = record
    Data: Integer;
    Next: PNode;
  end;
 
procedure lstInitRnd(var lst: PNode; n: Integer);
var p: ^PNode;
begin
  p:=@lst;
  for n:=n-1 downto 0 do begin
    New(p^); 
    with p^^ do begin
      Data:=-999+Random(1999); p:=@Next;
    end;
  end;
  p^:=nil;
end;
 
procedure lstPrint(s:string; T:Pnode);
var tmp : PNode;
begin
  Write(s);
  if T=nil then WriteLn(' пуст.')
  else begin
    tmp := T;
    while tmp<>nil do begin
       Write(' ',tmp^.Data);
       tmp := tmp^.Next
    end; 
    WriteLn;
  end;
end;
 
const n = 10;
var T:PNode;
begin
  T := nil;
 
  lstInitRnd(T, n);
 
  lstPrint('Список после генерации:', T);
 
  ReadLn
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2023, 10:22
Помогаю со студенческими работами здесь

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

Динамические структуры. Создать в динамической памяти односвязный список типа «кольцо»
1. Создать в динамической памяти односвязный список типа «кольцо» из символьных данных расположенных друг за другом по алфавиту,...

Создать в динамической памяти односвязный список типа «очередь» из случайных целых чисел
Динамические структуры данных: Создать в динамической памяти односвязный список типа «очередь» из случайных целых чисел. Организовать...

Создать в динамической памяти односвязный список типа «стек» из случайных вещественных чисел
Создать в динамической памяти односвязный список типа «стек» из случайных вещественных чисел (-500, 500). Предусмотреть добавление в него ...

Сформировать односвязный список так, чтобы после вставки каждого нового значения, список оставался отсортированным по возрастанию
сформировать односвязный список целочисл знач, таким образом чтобы после вставки каждого нового значения, список оставался отсортированным...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru