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

> ВНИМАНИЕ!

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

> Двунаправленный список(Delphi), задание сделал, но двунаправленостью не пахнет
krox
сообщение 12.10.2008 12:41
Сообщение #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 килобайт ) Кол-во скачиваний: 252
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 

- Текстовая версия 26.07.2025 21:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"