Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
John_2013
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 8
#1

Операции с двунаправленным списком - Delphi

29.03.2012, 17:28. Просмотров 435. Ответов 1
Метки нет (Все метки)

Пожалуйста, объясните как работать с двунаправленным динамическим списком и как поменять местами минимальный и первый элементы списка в частности, есть такой код:
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
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
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Menus;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    Button8: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type uk=^node;
      node=record
        data:integer;
        next:uk;
       end;
 
var
  Form1: TForm1;
  first:uk;
implementation
 
{$R *.dfm}
 
procedure vivod(M:TMemo);
  var cur:uk;
begin
  M.Clear;
  cur:=first;
  while cur<>nil do begin
      M.Lines.Add(IntToStr(cur.data));
      cur:=cur.next;
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
     first:=nil;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
  var q:uk;
begin
     if first=nil then begin
                          new(first);
                          first.data:=StrToInt(InputBox('Ввод элементов','Введите первый элемент','0'));
                          first.next:=nil;
                       end
     else begin
          new(q);
          q.data:=StrToInt(InputBox('Ввод элементов','Введите первый элемент','1'));
          q.next:=first;
          first:=q;
      end;
    vivod(Memo1);
 
end;
 
procedure TForm1.Button3Click(Sender: TObject);
  var temp:uk;
begin
    if first=nil then showMessage('Список пуст')
    else begin
    if first.next=nil then begin
                          dispose(first);
                          first:=nil;
                        end
    else begin
          temp:=first.next;
          dispose(first);
          first:=temp;
    end;
    vivod(Memo1);
    end;
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
 
 var q,cur:uk;
begin
  if first=nil then begin
                          new(first);
                          first.data:=StrToInt(InputBox('Ввод','Элемент','0'));
                          first.next:=nil;
                       end
else begin
    cur:=first;
    while(cur.next<>nil) do cur:=cur.next;
    new(q);
    q.data:=StrToInt(InputBox('Ввод','Элемент','0'));
    q.next:=nil;
    cur.next:=q;
  end;
    vivod(Memo1);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
  var cur,temp:uk;
begin
    if first=nil then showMessage('Список пуст')
    else begin
      if first.next=nil then begin
                          dispose(first);
                          first:=nil;
                        end
      else begin
        cur:=first;
          while(cur.next.next<>nil) do cur:=cur.next;
          dispose(cur.next);
          cur.next:=nil;
          end;
   end;
   vivod(Memo1);
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Form1.Close;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
var fp:TextFile;
    cur,q:uk;
begin
  if OpenDialog1.Execute then
  AssignFile(fp,OpenDialog1.FileName);
  try
 Reset(fp);
  except
  ShowMessage ('Ошибка');
  exit
 end;
 while not eof(fp) do begin
 if first=nil then begin
                          new(first);
                          readln (fp,first.data);
                          first.next:=nil;
                       end
     else begin
          new(q);
          readln (fp,q.data);
          q.next:=first;
          first:=q;
      end;
end;
CloseFile(fp);
vivod(Memo1);
end;
 
procedure TForm1.Button5Click(Sender: TObject);
var fp:TextFile;
    cur:uk;
begin
  if SaveDialog1.Execute then
  AssignFile(fp,SaveDialog1.FileName);
  try
  Rewrite(fp);
  except
  ShowMessage ('Ошибка');
  exit
 end;
  cur:=first;
  while cur <>  nil do
 begin
  writeln (fp,cur.data);
  cur:=cur.next;
 end;
CloseFile(fp);
 
 
end;
 
procedure TForm1.Button7Click(Sender: TObject);
 var cur:uk;
      k:integer;
begin
 
end;
 
  end;
 
procedure TForm1.Button8Click(Sender: TObject);
begin
form1.close;
end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
form1.close;
end;
 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2012, 17:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операции с двунаправленным списком (Delphi):

Основные операции со списком - Delphi
Есть задание: 1) Добавление элемента в начало списка. 2) Добавление элемента в хвост списка. 3) Добавление элемента в произвольное...

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

Работа со списком - Delphi
Дан однонаправленный список L1. Определить, есть ли в нем подряд идущие элементы, составляющие список L2.

Работа со списком - Delphi
Формирование списка из 10 элементов. Вставка элемента после минимального элемента списка. Оставить в списке только первые вхождение...

Работа со списком - Delphi
задача такая: Каждая запись списка содержит пол, имя, возраст, рост, вес, а также требования к партнеру: наименьший и наибольший...

Работа с однонаправленным списком - Delphi
Здравствуйте! Не могли бы вы подсказать решение данной задачи: Дан однонаправленный список, состоящий из целых чисел. Вставить перед...

1
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
01.04.2012, 21:45 #2
Задача ещё актуальна?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 21:45
Привет! Вот еще темы с ответами:

Combobox со списком структур - Delphi
Здравствуйте. Подскажите пожалуйста, как связать listbox или combobox со списком структур? например: у меня есть список адресов...

Работа с динамическим списком - Delphi
Доброго времени суток. Подскажите как можно добавить объект существующего класса в динамический список, в другом модуле.:help:

работа с цепным списком - Delphi
помогите разработать алгоритм удаления элемента из цепного списка.

Поиск с выпадающим списком совпадений - Delphi
Доброе время суток! Помогите реализовать поиск из БД с выпадающим списком совпадений по аналогии google. Т.е. ввожу предположим в Edit...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.