Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 22:11   #1
VSL
 
Регистрация: 21.11.2010
Сообщений: 2
По умолчанию Динамические структуры памяти

Есть задание:
1) Добавление элемента в начало списка.
2) Добавление элемента в хвост списка.
3) Добавление элемента в произвольное место списка.
4) Удаление элемента из головы списка
5) Удаление элемента из хвоста списка.
6) Удаление элемента из произвольного места списка.
7) Просмотр списка (Должна автоматически вызываться после любой модификации списка )
8) Разрушение всего списка
9) Алгоритм согласно варианту.
А вот мое решение

Код:
unit Unit1;

interface

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

type
  Plist=^list;
  list=record
   info:integer;
   link:Plist;
   end;
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Edit1: TEdit;
    StringGrid2: TStringGrid;
    Procedure Viewlist (f:Plist; St:TstringGrid);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  f,f2:Plist;

implementation

{$R *.dfm}

procedure TForm1.Viewlist(f:Plist; St:TstringGrid);
Var i,j:integer;
p:Plist;
begin
  for i:=1 to St.RowCount-1 do
     for j:=0 to 1 do
        St.Cells[j,i]:='';
  if f<>nil then begin
    p:=f; i:=1;
    while p<>nil do begin
      St.Cells[0,i]:=inttostr(i);
      St.Cells [1,i]:=inttostr(p^.info);
      p:=p^.link;
      i:=i+1;
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Cells[0,0]:='N';
  StringGrid1.Cells[1,0]:='INFO';
  f:=nil;
end;



Procedure Alg (f:Plist; var f2:Plist; N:integer);
  var p:plist;
begin
  if f<>nil then begin
    p:=f;
    f2:=nil;
    while p<>nil do begin
      if p^.info > N then
   //   Inslast (f2,p^.info);
      p:=p^.link;
    end;
  end;  
end;

Procedure TForm1.Button1Click(Sender: TObject);
 Var N:integer;

begin
  N:=strtoint (Edit1.text);
  Alg(f,f2,N);
  viewlist(f2,StringGrid2);
end;

procedure InsFirst(var f Plist, info:integer)
  Var p,Plist;
begin
new (P);
P^:=info;
P^:link:=f;
first :=p;
end;


Procedure DelFirst (var f, Plist)
  Var P, Plist;
begin
   if f <> nil then begin
      P:=first;
      f:=f^link;
   dispose(P):p:=nil;
  end;
  end;

Procedure Dellist (var f:Plist)
Var P,Plist;
begin
while f<>nil then begin
P:=list;
f:=f^list;
dispose (P):P:=nil;
end;
end;

Procedure Dellast (var f: Plist)
 Var P: Plist
begin
if f <> nil then begin
if f^.link=nil then begin
dispose (f):f:=nil;
end;
else begin
P:=First;
while P^link^.link <> nil do
P:= P^.Link;
dispose (P^link);
P^.link=nil;
end;
end;
end;
t:=P^.Link;
p:=t^link;
dispose(t);

end.
Исправьте, пожалуйста, мои глупые ошибки.
VSL вне форума Ответить с цитированием
Старый 15.03.2011, 08:35   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Может быть, не нужно изобретать одноколесный велосипед?...
модуль ContNrs, класс TObjectList
Посмотрите исходники, поищите мануал по использованию...
в 99% случаев, когда необходим сложный динамический массив - ОбъектЛист будет самым подходящим вариантом. Он явно устроен лучше, чем создаваемый новичком массив указателей, и позволяет хранить произвольные классы.
На крайний случай, если Вам необходима именно своя работа - почерпните вдохновение в исходниках этого листа...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамические структуры mego4el Помощь студентам 4 13.02.2011 00:30
динамические структуры Елена Лапуля Помощь студентам 3 04.05.2010 08:57
Динамические структуры!!!! Oooooleg Помощь студентам 4 22.05.2009 14:15