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

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

07.05.2009, 19:04. Показов 3908. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать алгоритм и программу решения задачи, в которой сформировать кольцевой односвязный список.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2009, 19:04
Ответы с готовыми решениями:

Разработать алгоритм и программу решения задачи
Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих ниже главной диагонали Помогите, пж, а то...

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

Разработать рекурсивный алгоритм и программу решения задачи
Разработать рекурсивный алгоритм и программу решения задачи, в которой вычислить: f(n)=1/(n+1)!. Исходные данные вводятся с клавиатуры....

7
2 / 2 / 0
Регистрация: 03.11.2008
Сообщений: 63
11.05.2009, 19:53  [ТС]
товарисчи плиз завтро сдавать (((((((
0
2 / 2 / 0
Регистрация: 03.11.2008
Сообщений: 63
13.05.2009, 00:04  [ТС]
как же переделать в кольцевой ? вод код для линейного:
Code
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
uses crt;
type
TList = ^List;
List = record
znach : integer;
Next: TList;
end;
procedure CreateList(var L: TList);
begin
L := nil;
end;
procedure DeleteList(var L: TList);
var
L1, L2: TList;
begin
if L = nil then exit;
if L^.Next = L
then begin
Dispose(L);
exit;
end;
L2 := L;
L := L^.Next;
while L <> L2 do
begin
L1 := L;
L := L^.Next;
Dispose(L1);
end;
Dispose(L2);
end;
procedure AddToList(var L: TList; S : integer);
var
L1, L2: TList;
begin
L1 := L;
if L1 = nil
then begin
new(L1);
L1^.Znach := S;
L := L1;
L^.Next := L;
exit;
end;
while L1^.Next <> L do
L1 := L1^.Next;
 
new(L2);
L2^.Znach := S;
L2^.Next := L;
L1^.Next := L2;
end;
procedure OutList(L: TList);
var
L1: TList;
begin
if L = nil then exit;
Writeln(L^.Znach);
L1 := L^.Next;
while L1 <> L do
begin
Writeln(L1^.Znach);
L1 := L1^.Next;
end;
end;
var
ListExample: TList;
i: integer;
begin
clrscr;
CreateList(ListExample);
 
writeln('Введите числа!0 - конец ввода');
read(i);
while i<>0 do
begin
AddToList(ListExample,i);
read(i);
end;
 
writeln;
OutList(ListExample);
readln;
readln;
end.
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
13.05.2009, 00:21
Кольцевой односвязный список красивая вещь это список в котором последний элемент ссылается на первый. По логике вещей, нам всего лишь нужно всегда хранить адрес первого элемента и при добавлении следующего элемента делать связь типа
элемент^.указатель:=указатель_на_первый_ элемент
Вот и вся Ваша сложность...
А что именно нужно реализовать? Построение и вывод на экран ?
0
2 / 2 / 0
Регистрация: 03.11.2008
Сообщений: 63
13.05.2009, 02:07  [ТС]
Да, именно построение и вывод на экран.А код программы не можете глянуть? чтото у меня не выходит её подкорректировать))
0
5 / 5 / 0
Регистрация: 13.05.2009
Сообщений: 11
13.05.2009, 02:25
вот пример кольца


Code
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
Type PElement = ^TElement;
     TElement = Record
      Data : Longint;
      Next : PElement;
     End;
 
Procedure Add(X : Longint; Var R : PElement); {добавление элемента в кольцо, эквивалентно вставки элемента между двумя}
Var P : PElement;
Begin
 P:=New(PElement);
 P^.Data:=X;
 P^.Next:=R^.Next;
 R^.Next:=P;
End;
 
{Пример реализации}
Var R, P : PElement;
    I : Longint;
 
Begin
 R:=New(PElement); R^.Data:=0; R^.Next:=R;
 For I:=1 To 4 Do
  Add(I, R);
 I:=0;
 {два раза выведем список}
 While (I < 3) Do
  Begin
   If R^.Data = 0 Then Inc(I) Else Writeln(R^.Data);
   R:=R^.Next;
  End;
 {уничнтожение списка связано с маленьким фокусом: преобразуем колько в линейный список}
 P:=R; {"разорвем" список на одном из элементов}
 R:=R^.Next;
 P^.Next:=Nil;
 {уничтожим как обычный список}
 While R <> Nil Do
  Begin
   P:=R;
   R:=R^.Next;
   Dispose(P);
  End;
End.
1
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
13.05.2009, 02:38
Вот моё видение решения данной задачи...
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
Program xa;
uses
  crt;
type
  TList = ^List;
  List = record
     data : integer;
     Next: TList;
  end;
var
  l,LBegin,LEnd:Tlist;
  n:integer;
  ch:char;
 
Procedure AddElem(var l:Tlist);
var
  tmp:Tlist;
begin
  Writeln('Vvedite zna4enie elemeHta cnicka');
  readln(n);
  if l=nil then
  begin
    new(l);
    l^.next:=nil;
    LBegin:=l;
    LEnd:=l;
    l^.data:=n
  end
  else
  begin
    new(tmp);
    l^.next:=tmp;
    l:=tmp;
    l^.next:=lBegin;
    l^.data:=n;
    LEnd:=tmp;
  end;
end;
 
Procedure DelList(var l:Tlist);
var
  tmp:Tlist;
begin
  while l<>LEnd do
  begin
    tmp:=l^.next;
    dispose(l);
    l:=tmp
  end;
  dispose(l)
end;
 
Procedure ViewList(l:Tlist);
begin
  if l=nil then
    Writeln('Cnisok nyst')
  else
  begin
    while l<>LEnd do
    begin
      Write(l^.data, ' ');
      l:=l^.next
    end;
    Write(L^.data, ' ');
  end;
  readkey
end;
 
begin
  l:=nil;
  repeat
    clrscr;
    writeln('Press:');
    writeln('D - dobavit element');
    Writeln('F - vivod nocledoBateLbnocti');
    Writeln('Vse Dpygie simvoLbl - BblXOD');
    Writeln;
    ch:=readkey;
    Case ch of
    'd','D':begin
              AddElem(l);
            end;
    'f','F':begin
              ViewList(LBegin);
            end;
    else
      ch:=#27;
    end;
  until ch=#27;
  DelList(LBegin);
end.
1
0 / 0 / 2
Регистрация: 10.10.2011
Сообщений: 16
28.10.2011, 11:23
Мое решение такое... с комментариями...
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
uses
  SysUtils;
 
type //структура ячейки
 pe=^el; //указатель на элемент списка
 el = record  // ЛОС - элемент списка
 inf: integer;     // информационное поле
 next: pe;     // указатель на следующий элемент
 end;
 
 Var //Глобальные переменные для использования в процедурах
 sag: pe; //указатель начала
 q: pe;   //текущий ук. в процедуре вывода
 s: pe;   //текущий ук. в процедуре создания КОС
 N: integer; // число ячеек
 
 //руссификатор
 function rus(s:string):string;
 var i: integer;
 begin
 for i:=1 to Length(s) do
 case s[i] of
  'А'..'п': s[i]:=chr(ord(s[i])-64);
  'р'..'я': s[i]:=chr(ord(s[i])-16);
  end;//case
  rus:=s;
   end;// конец руссификатора
   
 procedure input (var q:pe); //процедура ввода эл-ов в КОС
 var i:integer;
 begin
   For i:= 1 to N do
    begin
     New(q); //выделить память для новой ячейки
     q.inf := i; //заполняем инф.часть
     s.next := q; //связываем два эл-та цепочкой
     s:=q; //переход нашего указателя s на созданную ячейку q
    end;
  q.next := sag.next; //Даем последней ячейке адрес на заглавный элемент.
  //итак, сформирован Кольцевой Односвязный список
 end;
 
 
 procedure output(var q:pe);  //процедура вывода КОС на экран
 begin
  q:=sag.next; //ставим указатель на начало
  if (N = 0) then writeln(rus('КОС пуст... печалька'))
    else begin
     writeln('------------------');
     WriteLn(rus('Вывод КОС на экран: '));
     while (q.next <> sag.next) do begin //условие прохода по КОС
       write(q.inf,' ');
       q:=q.next;
       end;
     //вывод последнего элемента, т.к. в цикле while это пропускается
     if (q.next = sag.next) then begin
     write(q.inf, ' ');
     end;
      writeln;
      writeln(rus('Всего кол-во ячеек: '),N);
     end;
  end;
 
 
 BEGIN // начало основной программы
 new(sag); //создаем указатель начала
 s := sag; //ставим указатель s на него... эт нужно для п. input(q)
 
 write(rus('Введите количество ячеекв КОС: '));
 readln(N);
 
 input(q);  // п. ввода эл-ов в КОС
 output(q); // п. вывода КОС на экран
 
 readln;
 END.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2011, 11:23
Помогаю со студенческими работами здесь

Разработать алгоритм и программу для решения задачи
Дан файл f, компоненты которого являются действительными числами. Найти: а) сумму компонент файла f; б) последнюю компоненту файла.

Разработать алгоритм и программу решения задачи с использованием библиотечного модуля
найти среднее арифметическое элементов квадратной матрицы размером 3x3, состоящей из элементов целого типа.

Разработать алгоритм методом пошаговой детализации и программу решения задачи
Разработать алгоритм методом пошаговой детализации и программу решения задачи, в которой найти произведение всех элементов, расположенных...

Разработать алгоритм и программу решения задачи с использованием модуля пользователя
Разработать алгоритм и программу решения задачи с использованием модуля пользователя, в которой заменить нулями все положительные элементы,...

Разработать алгоритм и программу решения задачи с использованием библиотечного модуля
Разработать алгоритм и программу решения задачи с использованием библиотечного модуля пользователя, найти сумму наименьших элементов каждой...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
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