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

функция для создания списка структур

24.08.2010, 23:41. Показов 843. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос собствено в том , как оформить функцию для добавления структуры в список.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type prepod=record
   name:string;
   surn:string;
   midn:string;
   predmet:string;
   robgod:integer;
  end;
 
  ptr=^Item;
  Item=record
   data:prepod;
   next:ptr;
  end;
var ans:char;head,curr:ptr;
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure AddElem(var nach:ptr;znach1:prepod);
var tmp,tmp1:ptr;
begin
  if nach=nil then
  begin
    Getmem(nach,SizeOf(prepod));
    nach^.next:=nach;
    tmp:=nach;
  end
  else
  begin
    tmp:=nach;
    while tmp^.next<>nach do
      tmp:=tmp^.next;
    GetMem(tmp1,SizeOf(prepod));
    tmp1^.next:=nach;
    tmp^.next:=tmp1;
    tmp:=tmp1;
  end;
  tmp^.data:=znach1;
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2010, 23:41
Ответы с готовыми решениями:

Нужна функция для удаления списка
Помогите. Нужна срочно функция для удаления списка.

Объявление структур для списка
Доброго времени суток. Необходимо реализовать линейный связанный список. Подскажите пожалуйста аналог объявления структуры в си для...

Условие для сортировки списка структур
Добрый день! помогите пожалуйста написать правильно условие для сортировки: например есть несколько диапазонов значений: From1 =...

4
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
25.08.2010, 09:32
Основные действия можно реализовать так:
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
program Project1;
 
type
  TPrepod = record
    Name : string;
    Surn : string;
    Midn : string;
    Predmet : string;
    Robgod : integer;
  end;
 
  TPItem = ^TItem;
  TItem = record
   Data : TPrepod;
   Next : TPItem;
  end;
 
(*Добавление элемента в конец однонаправленного списка.*)
procedure AddItem(var aPList, aPItem : TPItem);
var
  PNext : TPItem;
begin
  if aPList = nil then begin
    aPList := aPItem;
  end else begin
    PNext := aPList;
    while PNext^.Next <> nil do
      PNext := PNext^.Next
    ;
    PNext^.Next := aPItem
  end;
end;
 
(*Удаление всех элементов списка из памяти.*)
procedure DelList(var aPList : TPItem);
var
  PNext, PDel : TPItem;
begin
  PNext := aPList;
  while PNext <> nil do begin
    PDel := PNext;
    PNext := PNext^.Next;
    Dispose(PDel);
  end;
  aPList := nil;
end;
 
(*Получить указатель на aI-й элемент списка. Элементы нумеруются от единицы.*)
function GetItem(const aPList : TPItem; const aI : Integer) : TPItem;
var
  PItem, PNext : TPItem;
  I : Integer;
begin
  I := 0;
  PItem := nil;
  PNext := aPList;
  while ( PNext <> nil ) and ( I <= aI ) do begin
    Inc(I);
    PItem := PNext;
    PNext := PNext^.Next;
  end;
  GetItem := PItem;
end;
 
var
  PList, PItem : TPItem;
begin
  (*Создаём однонаправленный список из трёх элементов.*)
 
  PList := nil;
 
  (*Выделяем память для элемента.*)
  New(PItem);
  (*Присваиваем значения.*)
  with PItem^ do begin
    Data.name := '1';
    Data.surn := '1';
    Data.midn := '1';
    Data.predmet := '1';
    Data.robgod := 1;
    Next := nil;
  end;
  (*Добавляем элемент в конец однонаправленного списка.*)
  AddItem(PList, PItem);
 
  (*Выделяем память для элемента.*)
  New(PItem);
  (*Присваиваем значения.*)
  with PItem^ do begin
    Data.name := '2';
    Data.surn := '2';
    Data.midn := '2';
    Data.predmet := '2';
    Data.robgod := 2;
    Next := nil;
  end;
  (*Добавляем элемент в конец однонаправленного списка.*)
  AddItem(PList, PItem);
 
  (*Выделяем память для элемента.*)
  New(PItem);
  (*Присваиваем значения.*)
  with PItem^ do begin
    Data.name := '3';
    Data.surn := '3';
    Data.midn := '3';
    Data.predmet := '3';
    Data.robgod := 3;
    Next := nil;
  end;
  (*Добавляем элемент в конец однонаправленного списка.*)
  AddItem(PList, PItem);
 
  (*Работа со списком.*)
  (*...*)
 
  (*Распечатать данные третьего элемента списка.*)
  PItem := GetItem(PList, 3);
  if PItem = nil then begin
    Writeln('В списке нет элемента с номером 3.');
  end else begin
    Writeln('Элемент №3:');
    Writeln('Name = ', PItem^.Data.name);
  end;
 
  (*...*)
 
  (*Удаляем все элементы списка из памяти.*)
  DelList(PList);
 
  Readln;
end.
Процедуру DelList() в конце работы надо обязательно вызывать - чтобы не было потерь памяти.
1
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
25.08.2010, 12:13
megabobik,есть тема, где расписано все очень подробно, посмтрите. https://www.cyberforum.ru/pascal/thread77419.html
0
 Аватар для megabobik
0 / 0 / 1
Регистрация: 15.01.2010
Сообщений: 45
25.08.2010, 16:06  [ТС]
Цитата Сообщение от lexus_ilia Посмотреть сообщение
megabobik,есть тема, где расписано все очень подробно, посмтрите. https://www.cyberforum.ru/pascal/thread77419.html
я читал ее , но там для целых чисел , а мне нужно для записей
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
25.08.2010, 21:08
ух ты, а разница большая? Я не вижу разницы, главное принцип, а принцип там есть, не вижу проблем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2010, 21:08
Помогаю со студенческими работами здесь

программа для создания списка номеров
Всем доброго дня или ночи ну или в крайнем случае утра. Окажите пожалуйста помощ в создании программы. Вобщем дело обстоит следующим...

Функция для обмена элементов в массиве структур
Пытаясь написать функцию сортировки массива из структур столкнулся с проблемой. Вот вид функции для обмена элементов: void swap...

Функция qsort для сортировки массивов структур
В общем есть структура struct User { int id; char nickname; int karma; };

Совет для создания сайта списка отелей
Добрый день! Мне нужен совет. Начал делать проект с 0 знаниями( не спрашивайте почему, все так получилось) В общем, нужно для своего...

[WPF] Триггеры для создания раскрывающегося списка
День добрый, вечер в радость, такой вопрос, я недавно начал работать в Wpf и у меня есть некоторая задумка создания раскрывающегося списка,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru