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

Перенести в начало непустого списка его последний элемент

07.09.2014, 11:44. Показов 2767. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используя линейные списки для хранения последовательности описать процедуры или функции для решения следующих задач:
а) перенести в начало непустого списка его последний элемент;
б) добавить в конец списка L1 все элементы списка L2;
в) вставить в список L за первым вхождением элемента E все элементы списка L1, если E входит в L.
p.s. крайне желательно с комментариями
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.09.2014, 11:44
Ответы с готовыми решениями:

9. Написать программу, содержащую подпрограмму, которая копирует в начало непустого списка М его последний элемент. Если элементы не найдены, то выдат
9. Написать программу, содержащую подпрограмму, которая копирует в начало непустого списка М его последний элемент. Если элементы не...

перенести в начало списка последний элемент
Уважаемые прогеры помогите с задачей данного типа: Написать программу переноса в начало списка его последнего элемента. списки мы не...

Перенести в начало непустого списка его последний элемент
Используйте линейные списки для хранения последовательности чисел. Опишите процедуру или функцию, которая: а) переносит в начало...

2
22 / 22 / 39
Регистрация: 10.05.2014
Сообщений: 77
11.09.2014, 11:54
Лучший ответ Сообщение было отмечено Магмовый как решение

Решение

а)
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
type  PRec=^TRec;
      TRec= record
             mint: integer;
             mnext:PRec;
            end;
procedure  Perenos(var List:PRec);
var  p,g:PRec;
       y:integer;
begin
 
     p:=List;
      While Assigned(p^.mnext) do
       begin
        g:=p;
         p:=p^.mnext;
       end;
      y:=p^.mint;
       g^.mnext:=nil;
        Dispose(p);
      New(p);
       p^.mint:=y;
        p^.mnext:=List;
         List:=p;
end;
procedure ToList(var List:PRec; ax:integer);
var  p:PRec;
begin
     New(p);
      p^.mint:=ax;
       p^.mnext:=List;
        List:=p;
end;
procedure  PrintList(List:PRec);
var  p:PRec;
begin
     p:=List;
      While Assigned(p) do
       begin
        Write(p^.mint:4);
         p:=p^.mnext;
       end;
     Writeln;
     Writeln;
end;
var i,x,n: integer;
      L: PRec;
begin
     L:=nil;
     Randomize;
     Write('Колличество элементов в L= ');
      Readln(n);
       for i:=1 to n do
        begin
         x:=Random(50)+1;
          ToList(L,x);
        end;
     Writeln;
     PrintList(L);
     Perenos(L);
     PrintList(L);
    Readln;
end.
б)
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
type  PRec=^TRec;
      TRec= record
             mint: integer;
             mnext:PRec;
            end;
procedure Vvod(var List:PRec; ay:integer);
var p,t:PRec;
begin
     p:=List;
      While Assigned(p^.mnext) do
        p:=p^.mnext;
      New(t);
       t^.mint:=ay;
        t^.mnext:=p^.mnext;
         p^.mnext:=t;
end;
procedure  ListToList(var List1:PRec; List2:PRec);
var  g:PRec;
     y:integer;
begin
     g:=List2;
      While Assigned(g) do
       begin
        y:=g^.mint;
        Vvod(List1,y);
        g:=g^.mnext;
       end;
end;
procedure ToList(var List:PRec; ax:integer);
var  p:PRec;
begin
     New(p);
      p^.mint:=ax;
       p^.mnext:=List;
        List:=p;
end;
procedure  PrintList(List:PRec);
var  p:PRec;
begin
     p:=List;
      While Assigned(p) do
       begin
        Write(p^.mint:4);
         p:=p^.mnext;
       end;
     Writeln;
     Writeln;
end;
var i,x,n: integer;
      L1,L2: PRec;
begin
     L1:=nil;
     L2:=nil;
     Randomize;
     Write('Количество элементов в L1= ');
      Readln(n);
       for i:=1 to n do
        begin
         x:=Random(50)+1;
          ToList(L1,x);
        end;
     Write('Количество элементов в L2= ');
      Readln(n);
       for i:=1 to n do
        begin
         x:=Random(50)+100;
          ToList(L2,x);
        end;
     Writeln;
     PrintList(L1);
     PrintList(L2);
     ListToList(L1,L2);
     PrintList(L1);
    Readln;
end.
в)
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
type  PRec=^TRec;
      TRec= record
             mint: integer;
             mnext:PRec;
            end;
function Poisk( List:PRec; ax:integer): boolean;
var  p:PRec;
begin
      Poisk:=false;
      p:=List;
       While Assigned(p) and (p^.mint<>ax)
         do p:=p^.mnext;
      if Assigned(p)
         then Poisk:=true;
end;
procedure Vvod(var List:PRec; ay,az:integer);
var p,t:PRec;
begin
     p:=List;
      While Assigned(p) and (p^.mint<>az) do p:=p^.mnext;
      if p^.mint=az then
       begin
        New(t);
         t^.mint:=ay;
          t^.mnext:=p^.mnext;
           p^.mnext:=t;
       end;
end;
procedure  ListToList(var List1:PRec; List2:PRec; ax:integer);
var  g:PRec;
     y,z:integer;
begin
     g:=List2; z:=ax;
      While Assigned(g) do
       begin
        y:=g^.mint;
         Vvod(List1,y,z);
          z:=y;
           g:=g^.mnext;
       end;
end;
procedure ToList(var List:PRec; ax:integer);
var  p:PRec;
begin
     New(p);
      p^.mint:=ax;
       p^.mnext:=List;
        List:=p;
end;
procedure  PrintList(List:PRec);
var  p:PRec;
begin
     p:=List;
      While Assigned(p) do
       begin
        Write(p^.mint:4);
         p:=p^.mnext;
       end;
     Writeln;
     Writeln;
end;
var i,x,n: integer;
      L1,L2,L: PRec;
begin
     L1:=nil; L2:=nil;
     Randomize;
     Write('Колличество элементов в L1= ');
      Readln(n);
       for i:=1 to n do
        begin
         x:=Random(50)+1;
          ToList(L1,x);
        end;
     Write('Колличество элементов в L2= ');
      Readln(n);
       for i:=1 to n do
        begin
         x:=Random(50)+100;
          ToList(L2,x);
        end;
     Writeln;
     PrintList(L1);
     PrintList(L2);
     Write('Введите число от 1 до 50 - ');
      Readln(x);
       Writeln;
        if Poisk(L1,x)
          then
           begin
            ListToList(L1,L2,x);
             PrintList(L1)
           end
          else Writeln('Число не найдено');
    Readln;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,157
Записей в блоге: 1
11.09.2014, 14:43
Для переноса достаточно:
Pascal
1
2
3
4
5
6
7
8
9
procedure Perenos(var List: PRec);
var p: PRec;
begin
  if (List=nil) or (List^.mnext=nil) then Exit;
  p:=List; while (p^.mnext^.mnext<>nil) do p:=p^.mnext;
  p^.mnext^.mnext:=List;
  List:=p^.mnext;
  p^.mnext:=nil;
end;
или даже просто обменять местами данные, не трогая сам "конверт":
Pascal
1
2
3
4
5
6
7
8
9
10
procedure  Perenos(List: PRec);
var
  p: PRec;
  t: Integer;
begin
  if (List=nil) or (List^.mnext=nil) then Exit;
  p:=List;
  while p^.mnext<>nil do p:=p^.mnext;
  t:=List^.mint; List^.mint:=p^.mint; p^.mint:=t;
end;
Добавлено через 8 минут
Добавление списка L2 (не его копии) в конец списка L1 вообще тривиально:
Pascal
1
2
3
4
5
6
7
8
9
10
procedure AddToList(var L1, L2: PRec);
var
  p: PRec;
begin
  if L1=nil then begin
    L1:=L2; Exit;
  end;
  p:=L1; while p^.mnext<>nil do p:=p^.mnext;
  p^.mnext:=L2;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.09.2014, 14:43
Помогаю со студенческими работами здесь

Перенести в начало непустого двунаправленного списка L его последний элемент
Облазил форум, ответа так и не нашел :(помогите разобраться. Создать два двунаправленных списка L1, L2. Вывести на экран оба списка....

Написать процедуру которая переносит в начало непустого списка L его последний элемент.
ПРОШУ ,как можно быстрее Добавлено через 1 минуту Program Spisok; type zap=record fam:string; im:string; otc:string; end;

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

Перенести последний элемент списка в его начало
Привет всем! Помогите выполнить задание на си: Создать список, содержащий целые числа. Перенести последний элемент списка в его начало....

Описать и проверить процедуру или функцию, которая переносит в начало непустого списка L его последний элемент.
type TЭ=…; {тип элементов списка} {выбирается по желанию} список= ^звено; звено: record элем: TЭ; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
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. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru