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

Зацикленный список

11.05.2021, 07:28. Показов 2093. Ответов 1

Студворк — интернет-сервис помощи студентам
Помогите преобразовать список в зацикленный список.
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
type
  t=^l;
  l=record
    number:integer;
    fam:string;
    Next:t;
  end;
var
  p,c,n,d,x,z,v:t;
  m,k,y,f:integer;
  fun:string;
procedure NewE(number:integer;fam:string;var w:t);
begin
  New(w);
  w^.number:=number;
  w^.fam:=fam;
end;
procedure Paste(fam:string);
begin
  NewE(m,fam,n);
  m:=m+1;
  if p=nil then
  begin
    n^.Next:=nil;
    p:=n;
  end
  else
  begin
    c:=p;
    if c^.fam>n^.fam then
    begin
      n^.Next:=p;
      p:=n;
      exit;
    end;
    repeat
      if c^.fam>n^.fam then
      begin
        n^.Next:=c;
        d^.Next:=n;
        exit;
      end
      else
      begin
        d:=c;
        c:=c^.Next;
      end;
    until c=nil;
    c:=d;
    n^.Next:=nil;
    c^.Next:=n;
  end;
end;
procedure View(p:t);
begin
  if p<>nil then
  begin
    c:=p;
    while c<>nil do
    begin
      writeln(c^.fam,': ', c^.number);
      c:=c^.Next;
    end;
  end;
end;
procedure Search(fam:string);
begin
  NewE(m,fam,n);
  if p<>nil then
    c:=p;
    while c<>nil do
    begin
      if c^.fam=n^.fam then
      begin
         writeln('Элемент найден',': ',c^.number);
         x:=c;
         exit
      end
      else
      begin 
        c:=c^.Next;
        x:=nil;
      end;
    end; 
    writeln('Элемент ненайден')
end;
procedure Delete(fam:string);
begin
  NewE(m,fam,n);
  if p<>nil then
  begin
    c:=p;
    if c^.fam=n^.fam then
    begin
      c:=p;
      p:=p^.Next;
      Dispose(c);
    end
    else
    begin
      c:=p;
      while c^.fam<>n^.fam do
      begin
        d:=c;
        c:=c^.Next;
      end;
      d^.Next:=c^.Next;
      Dispose(c);
    end;
  end;
end;
begin
  m:=1;
  Paste('Хузориев');
  Paste('Попов');
  Paste('Иванов');
  Paste('Жижин');
  Paste('Алексеев');
  while true do
  begin
    writeln('----------------------------------');
    writeln('1-Вывод');
    writeln('2-Добавить элемент');
    writeln('3-Удалить элемент');
    writeln('4-Поиск элемента');
    writeln('5-Выход');
    writeln('----------------------------------');
    Write('Команда: ');
    readln(k);
    writeln;
    case k of
      1:View(p);
      2:begin
          write('Введите фамилию: '); readln(fun);
          Paste(fun);
          writeln('Элемент добавлен')
        end;
      3:begin
          write('Введите фамилию: '); readln(fun);
          Search(fun);
          if x<>nil then
          begin
            Delete(fun);
            writeln('Элемент удалён')
          end;
        end;
      4:begin
          write('Введите фамилию: '); readln(fun);
          Search(fun);
        end;
      5: exit;
     else writeln('Неверный номер команды');
     end;
     writeln(' ');
  end;
end.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2021, 07:28
Ответы с готовыми решениями:

Линейный зацикленный односвязный список
Есть уже готовый шабон линейного односвязного списка и его нужно сделать циклическим: template&lt;typename T&gt; class List { ...

Зацикленный scanf_s
Scanf_s после первого ввода больше ничего не ждет и в цикле присваивает переменной старое значение и отправляет его. char *s = new...

Зацикленный алгоритм
Добрый день. Имеется программа, в которой есть таймер. Из обработчика которого вызывается процедура, которая на другой форме, где что...

1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
11.05.2021, 09:43
Лучший ответ Сообщение было отмечено ONETHRRELUCKI как решение

Решение

1)
Pascal
24
  n^.Next:=n;
2) все обходы списка, где p=nil переписать с учётом кольца без конца,
3) при удалении последнего элемента не забыть, что он указывает сам на себя.

Добавлено через 2 минуты
Вместо глобальных переменных лучше писать процедуры/функции, которым список и все необходимое передается параметрами.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2021, 09:43
Помогаю со студенческими работами здесь

Зацикленный таймер
Привет всем! Мне нужно сделать, чтобы каждые 0.1 секунды происходило какое-то действие. Подскажите, как лучше и не ресурсоемко реализовать...

Зацикленный мир
Доброго времени суток! Полистав немного данный форум, и не найдя свежих ответов и идей, решила создать эту темку. Не ругайтесь сильно :) ...

Зацикленный цикл
Дана задача, написать прогу: если вводимое число четное то делим его на 2, нечетное - умножаем на 3+1. И повторять так пока не дойдет до 1....

Зацикленный Catch ( исключения )
Всем доброго времени суток. Столкнулся с такой проблемой: В ниже приведенном коде, почему то, при установке флага failbit, когда управление...

не работает зацикленный innerHTML
Добрый день! Подскажите пожалуйста, почему у меня не работает следующий кусок кода: &lt;HTML&gt; &lt;HEAD&gt; &lt;SCRIPT&gt; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru