IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Двунаправленный список(Delphi), задание сделал, но двунаправленостью не пахнет
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Задание следующее...

Элементы двунаправленного списка имеют следующую структуру:
Шифр детали
Наименование
Цена
Вес
Указатель предыдущего
Указатель последующего
Удалить элемент с заданным номером К от начала списка.

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

вот код
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Edit4: TEdit;
GroupBox3: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
GroupBox4: TGroupBox;
Label13: TLabel;
Edit5: TEdit;
Edit6: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type PElem=^TElem; //Описание указателя на элемент
TElem= record //Описание элемента
shifr: string[5];
naim: string[10];
cena:string[2];
ves:string[3];
st:integer;
sled: PElem;
pred: PElem;
end;

var
Form1: TForm1;
p, head,zad, last, nex: PElem;
t,i:integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

head:=Nil;
last:=Nil;
nex:=Nil;
t:=0;
end;
//добавление
procedure TForm1.Button1Click(Sender: TObject);
begin
New(p);
p^.shifr:=Edit1.Text;
p^.naim:=Edit2.text;
p^.cena:=Edit3.Text;
p^.ves:=Edit4.Text;
t:=t+1;
Edit6.Clear;
Edit6.Text:=inttostr(t);
P^.st:=strtoint(Edit6.Text);
If head=Nil Then head:=p
Else
last^.sled:=p;
P^.sled:=Nil;
Last:=p;
end;
//просмотр
procedure TForm1.Button3Click(Sender: TObject);
begin
P:=Head;
Label9.Caption:=''; Label10.Caption:='';
Label11.Caption:=''; Label12.Caption:='';
While P <> Nil Do
Begin
Label9.Caption:=Label9.Caption+chr(13)+P^.shifr;
Label10.Caption:=Label10.Caption+chr(13)+P^.naim;
Label11.Caption:=Label11.Caption+chr(13)+P^.cena;
Label12.Caption:=Label12.Caption+chr(13)+P^.ves;
P:=P^.sled;
End;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;
//удаление элемента с заданным номером
procedure TForm1.Button2Click(Sender: TObject);
begin
i:=0;
P:=Head;
While P<>Nil Do
Begin
If StrToInt(Edit5.Text)-1=i Then
Begin
If P=Head Then
Begin
Head:=P^.sled;
Dispose(P);
P:=Head;
End
Else
Begin
If P^.sled=Nil Then
begin
Last^.sled:=Nil;
end
Else
Begin
Last^.sled:=P^.sled;
End;
dispose(P);
P:=Last;
End;
End;
Last:=P;
P:=P^.sled;
inc(i);
End;
end;

end.

в этом коде однонаправленый список... нужен двунаправленый по заданию...

в прикреплёном архиве все файлы проекта...


Прикрепленные файлы
Прикрепленный файл  ____2.rar ( 9.56 килобайт ) Кол-во скачиваний: 285
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
krox   Двунаправленный список(Delphi)   12.10.2008 16:41
volvo   Во-первых, у тебя Дельфи, а для Дельфи есть соотве…   12.10.2008 17:04
krox   хм... получается, что вначале надо изменить проце…   12.10.2008 19:33
volvo   Ну, как знаешь... А я подсказывать тебе, как некор…   12.10.2008 20:28
krox   вся проблема в том, что ООП ещё не проходили.... и…   12.10.2008 20:30
volvo   Записи и процедуры/функции знаешь, как использоват…   13.10.2008 17:26
krox   спасибо тебе, volvo... сёдня был на паре... показа…   13.10.2008 19:06
мисс_граффити   Нас так же учили... Программирование на языках вы…   14.10.2008 5:33
krox   Препод сказал ещё сортировку по любому ключу приле…   25.10.2008 18:42
volvo   По-моему, ты недооцениваешь преимущества Паскаля/Д…   25.10.2008 19:11
krox   спасибо) работает) очень грамотный и тонкий наёп с…   25.10.2008 21:06
volvo   Точно там же, где и предложенное мной выше разделе…   25.10.2008 21:29
krox   я немного не врубился... если используем рекурсию …   26.10.2008 16:19
volvo   Как хочешь так и засовывай... Заодно засунь трехна…   26.10.2008 16:52
krox   попытаюсь объяснить преподу эту точку зрения... х…   26.10.2008 17:07
krox   можешь ещё с выводом элементов в обратном порядке …   26.10.2008 17:31
krox   наконец-то нашёл двунаправленое удаление элементов…   30.11.2008 16:16


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 10:38
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name