1 / 1 / 2
Регистрация: 10.07.2015
Сообщений: 157
1

Линейные списки

27.12.2017, 21:51. Показов 5909. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Представить одну из приведенную ниже таблицу в виде линейного списка L,
элементами которого являются строки таблицы. Написать процедуры организа-
ции, добавления элемента в список, исключения элемента из списка, просмотра
списка, а также одну из процедур в соответствии с вариантом, приведенным ни-
же.
Значения и количество записей в таблице студент выбирает самостоятельно.
Исходные данные после организации списка должны сохраняться в файле и при
повторном запуске программы считываться из файла. Количество строк таблицы
не задается.
также нужно применить процедуру,которая удаляет первый элемент из непустого списка L
ПОЖАЛУЙСТА,ПОМОГИТЕ((((
Миниатюры
Линейные списки  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2017, 21:51
Ответы с готовыми решениями:

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

Линейные списки
Помогите пожалуста решить задачу. Уже неделю не могу решить! Где-то в воде нового элемена ошибка,...

линейные списки
помогите пожалуйста срочно с написанием программы по линейным спискам: Создать список Р, что...

Линейные списки
Помогите пожалуйста в решении задачи! 1.Используйте линейные списки для хранения...

2
1 / 1 / 2
Регистрация: 10.07.2015
Сообщений: 157
28.12.2017, 09:20  [ТС] 2
Цитата Сообщение от Kateryna1111 Посмотреть сообщение
одну из приведенную ниже таблицу
не одну из, а просто таблицу, приведенную ниже

Добавлено через 11 часов 17 минут
Пожалуйста,помогите...
0
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
28.12.2017, 10:02 3
Лучший ответ Сообщение было отмечено Kateryna1111 как решение

Решение

Взято отсюда: Динамические структуры данных (списки, очереди, стеки, деревья)

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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
program Spisok;
 
type
  oc = record
    mat, ist, fiz: byte;
  end;
  tabl = record
    fam, im, ot: string[128];
    o: oc;
  end;
  Tinf = tabl;{тип данных, который будет храниться в элементе списка}
  List = ^TList;{Указатель на элемент типа TList}
  TList = record {А это наименование нашего типа "запись" обычно динамические структуры описываются через запись}
    data: TInf;  {данные, хранимые в элементе}
    next: List;   {указатель на следующий элемент списка}
  end;
 
{Процедура добавления нового элемента в односвязный список}
procedure AddElem(var spis1: List; znach1: TInf);
var
  tmp: List;
begin
  if spis1 = nil then {Проверяем не пуст ли список, если пуст, то }
  begin
    New(spis1);
    tmp := spis1;
  end
  else {в случае если список не пуст}
  begin
    tmp := spis1;
    while tmp^.next <> nil do
      tmp := tmp^.next; {ставим tmp на последний элемент списка}
    New(tmp^.next);
    tmp := tmp^.next;   {переносим tmp на новый элемент}
  end;
  tmp^.next := nil; {зануляем указатель}
  tmp^.data := znach1; {заносим значение}
end;
 
{процедура печати списка
полностью расписана при работе со стеком}
procedure Print(spis1: List);
begin
  if spis1 = nil then
  begin
    writeln('Список пуст.');
    exit;
  end;
  while spis1 <> nil do
  begin
    Write(spis1^.data, ' ');
    spis1 := spis1^.next
  end;
end;
 
{процедура удаления списка
 полностью расписана при работе со стеком}
procedure FreeStek(spis1: List);
var
  tmp: List;
begin
  while spis1 <> nil do
  begin
    tmp := spis1;
    spis1 := spis1^.next;
    Dispose(tmp);
  end;
end;
 
{процедура поиска в списке
 полностью расписана при работе со стеком}
function SearchElemZnach(spis1: List; znach1: TInf): List;
begin
  if spis1 <> nil then
    while (Spis1 <> nil) and (znach1 <> spis1^.data) do
      spis1 := spis1^.next;
  SearchElemZnach := spis1;
end;
 
{процедура удаления элемента
 полностью расписана при работе со стеком}
procedure DelElem(var spis1: List; tmp: List);
var
  tmpi: List;
begin
  if (spis1 = nil) or (tmp = nil) then
    exit;
  if tmp = spis1 then
  begin
    spis1 := tmp^.next;
    Dispose(tmp);
  end
  else
  begin
    tmpi := spis1;
    while tmpi^.next <> tmp do
      tmpi := tmpi^.next;
    tmpi^.next := tmp^.next;
    Dispose(tmp);
  end;
end;
 
{процедура удаления элемента по значению
 полностью расписана при работе со стеком}
procedure DelElemZnach(var Spis1: List; znach1: TInf);
var
  tmp: List;
begin
  if Spis1 = nil then
  begin
    Writeln('Список пуст');
    exit;
  end;
  tmp := SearchElemZnach(spis1, znach1);
  if tmp = nil then
  begin
    writeln('Элемент с искомым значением ', znach1, ' отсутствует в списке.');
    exit;
  end;
  DelElem(spis1, tmp);
  Writeln('Элемент удалён.');
end;
 
{процедура удаления элемента по позиции
 полностью расписана при работе со стеком}
procedure DelElemPos(var spis1: List; posi: integer);
var
  i: integer;
  tmp: List;
begin
  if posi < 1 then
    exit;
  if spis1 = nil then
  begin
    Write('Список пуст');
    exit
  end;
  i := 1;
  tmp := spis1;
  while (tmp <> nil) and (i <> posi) do
  begin
    tmp := tmp^.next;
    inc(i)
  end;
  if tmp = nil then
  begin
    Writeln('Элемента с порядковым номером ', posi, ' нет в списке.');
    writeln('В списке всего ', i - 1, ' элемента(ов).');
    exit
  end;
  DelElem(spis1, tmp);
  Writeln('Элемент удалён.');
end;
 
 
 
var
  Spis, tmpl: List;
  znach: tabl;
  n, i: integer;
  f: file of tabl;
 
begin
  Spis := nil;
  assign(f, 'data.dat');
  rewrite(f);
  write('Введите количество добавляемых элементов: ');
  readln(n);
  writeln('Введите значения добавляемых элементов: ');
  for i := 1 to n do
  begin
    write('Введите фамилию: ');
    readln(znach.fam);
    write('Введите имя: ');
    readln(znach.im);
    write('Введите отчество: ');
    readln(znach.ot);
    write('Введите оценку по математике: ');
    readln(znach.o.mat);
    write('Введите оценку по истории: ');
    readln(znach.o.ist);
    write('Введите оценку по физике: ');
    readln(znach.o.fiz);
    AddElem(Spis, znach);
    write(f, znach);
  end;
  close(f);
  writeln('Данные в файл записаны успешно.');
  
  Spis := nil;
  reset(f);
  while not eof(f) do
  begin
    read(f, znach);
    AddElem(Spis, znach);
  end;
  close(f);
  writeln('Данные из файла:');
  Print(Spis);
  writeln;
  Write('Введите порядковый номер удаляемого элемента: ');
  readln(n);
  DelElemPos(Spis, n);
  Print(Spis);
  FreeStek(Spis);
end.
0
28.12.2017, 10:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2017, 10:02
Помогаю со студенческими работами здесь

Линейные связанные списки
Составить программу обработки списка. Вид списка: линейный дважды связанный. Тело программы должно...

Линейные 1направленные списки.
Вставка в нач. и конец списка, просмотр, поиск и удаление. Помогите поправить код программы....

ДСД. Линейные списки
Attention! Даны два целочисленных списка L1 и L2. Построить новый список L3, включив в него...

Линейные списки (найти ошибки)
Помогите пожалуйста найти ошибки в этих двух программах: 1. Создать линейный список из слов,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru