Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
John_2013
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 8
1

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

29.03.2012, 17:28. Просмотров 456. Ответов 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
Ответы с готовыми решениями:

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

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

Работа со списком
Формирование списка из 10 элементов. Вставка элемента после минимального...

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

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

1
Одиночка
3933 / 1858 / 337
Регистрация: 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 со списком структур
Здравствуйте. Подскажите пожалуйста, как связать listbox или combobox со...

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


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

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

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