Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 6
1

Односвязный неупорядоченный список

07.06.2007, 15:23. Показов 5325. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вобщем такая задачка:
Односвязный неупорядоченный список(меню, модули)
Написать следующие процедуры:
1)добавление узла в список
2)Вывод содержимого списка на экран
3)Потск узлов с заданным значением
4)сохранение содержимого в текстовом файле.
5)Чтение содержимого списка из текстового файла.
6)удаление узла с заданным значением.
7)очистка списка
8)Сортировка элементов списка
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2007, 15:23
Ответы с готовыми решениями:

Построить двунаправленный неупорядоченный список номеров телефонов (консоль)
Построить двунаправленный неупорядоченный список номеров телефонов: семизначных – абонентов;...

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

FiLo односвязный список
Здравствуйте! Имеется такая задача: В FiLo на базе односвязного списка написать метод,...

Линейный односвязный список
Имеется упорядоченный по коду группы линейный односвязный список, содержащий сведения об учащихся...

3
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
07.06.2007, 16:25 2
В чем именно проблема?
0
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 6
08.06.2007, 15:22  [ТС] 3
Не могу правильно составить меню для выполнения програм.
Сами процедуры у меня сейчас имеют такой вот вид:
program Spisok;

Delphi
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
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type
  ptr = ^elem;
  elem = record
    next:ptr;
    data:Integer;
  end;
 
var
  head:ptr;
  i:Integer;
 
procedure PrintList(z:ptr);
 
begin
  while z ; nil do
  begin
    write(z^.data, ' ');
    z := z^.next;
  end;
  writeln;
end;
 
Procedure InsertIntoList(var z:ptr; el:Integer);
 
var t:ptr;
begin
  New(t);
  t^.data := el;
  if z ; nil then
  begin
    t^.next := z^.next;
    z^.next := t
  end
  else
  begin
    z := t;
    z^.next := nil;
  end;
end;
 
Function SearchElement(z:ptr; el:Integer):ptr;
 
begin
  while (z ; nil) and (z^.data ; el) do
    z := z^.next;
  Result := z;
end;
 
Procedure DeleteFromList(var z:ptr; el:Integer);
 
var
  t, v:ptr;
begin
  if z = nil then exit;
  if z^.data = el then begin
    t := z;
    z := z^.next;
    Dispose(t);
    exit;
  end;
  v := z;
  while (v ; nil) and (v^.data ; el) do begin
    t := v;
    v := v^.next;
  end;
  if v ; nil then begin
    t^.next := v^.next;
    Dispose(v);
  end;
end;
 
Procedure ClearList(var z:ptr);
 
var
  t:ptr;
begin
  while (z ; nil) do begin
    t := z;
    z := z^.next;
    Dispose(t);
  end;
end;
 
procedure PrintListToFile(z:ptr; str:string);
 
var
  f:TextFile;
begin
  AssignFile(f, str);
  Rewrite(f);
  while z ; nil do
  begin
    writeln(f, z^.data);
    z := z^.next;
  end;
  Close(f);
end;
 
procedure ReadListFromFile(var z:ptr; str:string);
 
var
  f:TextFile;
  id:Integer;
  t:ptr;
begin
  if z ; nil then
    ClearList(z);
  AssignFile(f, str);
  Reset(f);
  readln(f, id);
  InsertIntoList(z, id);
  t := z;
  while not EOF(f) do
  begin
    readln(f, id);
    InsertIntoList(t, id);
    t := t^.next;
  end;
  Close(f);
end;
 
Function SortList(head: ptr): ptr;
 
var
  newh, cur, sel: ptr;
begin
  newh:=nil;
  while head ; nil do begin
    sel:=head;
    head:=head^.next;
    if (newh=nil) or (sel^.data  newh^.data) then
    begin
      sel^.next:=newh;
      newh:=sel;
    end
    else
    begin
      cur:=newh;
      while (cur^.next ; nil) and (cur^.next^.data  sel^.data) do
        cur:=cur^.next;
      sel^.next:=cur^.next;
      cur^.next:=sel;
    end;
  end;
  SortList:=newh;
end;
 
begin
  Randomize;
  head := nil;
  for i := 1 to 20 do
    InsertIntoList(head, random(10));
  PrintListToFile(head, 'c:\1.txt');
  PrintList(head);
 
  DeleteFromList(head, 4);
  PrintList(head);
 
  head := SortList(head);
  PrintList(head);
 
  if SearchElement(head, 5) = nil then
    writeln('Number 5 is not in list')
  else writeln('Number 5 is in list');
 
  ClearList(head);
  PrintList(head);
 
  readln;
end;
end;
и типа дальше должно быть минюшко.
Да и просто проверь плиз, как прога работает. А то я первый раз сталкиваюсь списками, вот и возникли траблы
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
09.06.2007, 21:37 4
Насколько видно по коду, ты реализовал все функции. А меню можно сделать обычными командами: вывести список достпных команд пользователю, и при вооде им какой-либо, вызывать связанную с ней функцию.

Или можно попробовать сделать меню, типа, строк, которые подсвечиваются в зависимости от нажатия клавишь на клаве...
0
09.06.2007, 21:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2007, 21:37
Помогаю со студенческими работами здесь

Односвязный и двусвязный список
Составить программу, которая из списка из n элементов удаляет в порядке просмотра каждый k-1-й...

односвязный список, удаление элемента
Добрый день! Столкнулся с такой проблемой, создаю список(кнопка 1), далее хочу удалить нужный мне...

Как вывести односвязный список в обратном порядке?
Всем привет. Подскажите, пожалуйста, как вывести односвязный список в обратном порядке.

Односвязный список: добавление элементов в начало и в конец
добавление элементов в начало функции и в конце с помошью функции прошу помоч. program Project1;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru