Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 03.10.2008
Сообщений: 35

Динамические структуры данных: списки

05.10.2008, 10:15. Показов 2609. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Искал манул, не нашел путного ничего... Суть задачи такова
"Написать процедуру, которая вставляет новый элемент Е, после первого элемента непустого списка Л" и
"Описать процедуру или функцию которая в списке Л из каждой группы подряд идущих элементов оставляет только один"
Ващще хз как сделать, помогите, кодом, советом или мануалом пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2008, 10:15
Ответы с готовыми решениями:

Динамические структуры данных. Списки
С клавиатуры вводится последовательность символов. Построить из них список. Вывести символы списка в обратном порядке. Добавить после...

Динамические структуры данных. Простые списки
Помогите решить: "Составить список, состоящий из кодов псевдографических символов. Выделить в отдельный список все символы, оформляющие...

Динамические структуры данных. Линейные списки
1. Сформировать список из N целочисленных случайных элементов (N – вводится пользователем, значения элементов выбирать из ...

5
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
05.10.2008, 17:55
Вот, например, информация к размышлению:
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
type
    PItem = ^TItem;
    TItem = record  {элемент списка}
        Data:Integer;  {данные элемента}
        Next:PItem;  {указатель на следующий элемент}
    end;
 
procedure NewList(var L:PItem; Len:Integer);
{создаем новый список в переменной L}
var p:PItem; i:Integer;
begin
    if Len<=0 then begin  {если длина равна 0}
        L := nil;  {то список пустой}
        exit;
    end;
    i := 1;
    new(L);  {создаем новый элемент списка}
    L^.Data := i;
    inc(i);
    p := L;  {копируем указатель на элемент}
    dec(Len);
    while Len>0 do begin {пока длина не закончилась}
        new(p^.Next); {создаем следующий элемент списка}
        p := p^.Next; {и переходим на него}
        p^.Data := i;
        inc(i);
        dec(Len); {убавляем длину}
    end;
    p^.Next := nil; {у последнего элемента списка нет следующего}
end;
 
procedure DisposeList(var L:PItem);
{уничтожаем список, освобождаем память}
var p:PItem;
begin
    while L<>nil do begin {пока список не пуст}
        p := L;  {текущий элемент списка}
        L := L^.Next; {список теперь начинается со следующего элемента}
        dispose(p); {а текущий удаляем}
    end;
end;
 
procedure PrintList(L:PItem);
{выводим данные из списка}
var b:boolean;
begin
    write('(');
    b := false; {вспомогательна переменная для запрета лишней запятой в начале}
    while L<>nil do begin {пока в списке еще есть элементы}
        if b then write(', ') else b := true;
        write(L^.Data); {выводим текущий элемент}
        L := L^.Next; {и переходим на следующий}
    end;
    writeln(')');
end;
 
var list:PItem;
begin
    NewList(list, 10); {создаем список}
    write('list = ');
    PrintList(list); {выводим список}
    DisposeList(list); {уничтожаем список}
end.
0
1 / 1 / 1
Регистрация: 03.10.2008
Сообщений: 35
05.10.2008, 18:38  [ТС]
А можно камментов чтоли побольше, или так рассказать что вообще код делает, я с этой чтукой фпервые столкнулси =)
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
06.10.2008, 20:00
Один элемент списка содержит какие-то данные и указатель на следующий элемент списка. Последний элемент списка в указателе на следующий содержит nil. Сам список - это указатель на первый элемент. Пустой список - это nil.

Т.е. получается примерно такая картина:
Code
1
2
3
4
5
 list
  |
  V
[item1] -> [item2] -> ... -> [itemN] -> nil
 data1      data2             dataN
0
1 / 1 / 1
Регистрация: 03.10.2008
Сообщений: 35
10.10.2008, 16:14  [ТС]
Цитата Сообщение от mustaman Посмотреть сообщение
"Написать процедуру, которая вставляет новый элемент Е, после первого элемента непустого списка Л"
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
uses crt;
 
type
 Pelo= ^Telo;
 Telo = record
        head: integer;
        tail: Pelo;
 end;
 
 
procedure Add(var p: Pelo; el: integer);
var
 temp: Pelo;
begin
 temp := new(Pelo);
 temp^.head := el;
 temp^.tail := p;
 p := temp;
end;
 
procedure PrintPelo(p: Pelo);
begin
 write(p^.head, ' ');
 if p^.tail<>nil then
   PrintPelo(p^.tail);
end;
 
var
 t1: Pelo;
 k, i: integer;
begin
 clrscr;
 t1 := new(Pelo);
 t1^.head  := 17;
 t1^.tail := nil;
 for i:=1 to 15 do
   begin
    k := random(15)+1;
    Add(t1, k);
    write(k, ' ');
   end;
 writeln;
 PrintPelo(t1);
 readln;
end.
Где косяк?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.10.2008, 20:33
Цитата Сообщение от mustaman Посмотреть сообщение
"Написать процедуру, которая вставляет новый элемент Е, после первого элемента непустого списка Л"
Вставляет не после, а перед первым элементом.
Pascal
1
2
3
4
5
6
7
8
9
procedure Add(var p: Pelo; el: integer);
var
 temp: Pelo;
begin
 temp := new(Pelo);
 temp^.head := el;
 temp^.tail := p^.tail; {новый указывает на бывший второй}
 p^.tail := temp; {а первый указывает на новый}
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2008, 20:33
Помогаю со студенческими работами здесь

Динамические структуры данных. Списки. Слово-перевертыш
Динамические структуры данных. Списки: В деке задать слово. Определить, является ли оно словом-перевертышем. помогите плз ...

Базовые динамические структуры данных. Связные списки
Условие: Циклический односвязный список с барьером (фиктивным элементом). Порядок :FIFO (очередь) Задача: В соответствии с условием...

Динамические структуры, списки. Программа написана, но есть один недочет
Составить программу, которая переворачивает список L, т.е. изменяет ссылки в этом списке так, чтобы его элементы оказались расположенными в...

Динамические структуры данных. Организация данных в списковые структуры
Написать программу вставки нового элемента в список за некоторым заданным по- рядковым номером элементом (вставка осуществляется не в...

Динамические структуры данных.
Помогите пожалуйста с программой:help: : Разработайте программу работы с односвязным списком. Программа должна содержать следующие...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru