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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2010, 20:52   #1
dip
Пользователь
 
Регистрация: 23.10.2009
Сообщений: 11
По умолчанию Двунаправленный список

подскажите как создать из файла двунаправленный список?чтобы указатель двигался вперёд и назад,но не кольцевой список
dip вне форума Ответить с цитированием
Старый 28.02.2010, 21:02   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

пишешь структуру списка, основные ф-ии, загружаешь в него файл(по символьно или построчно как угодно) , нэ?
NiCola999 вне форума Ответить с цитированием
Старый 28.02.2010, 21:25   #3
dip
Пользователь
 
Регистрация: 23.10.2009
Сообщений: 11
По умолчанию

Код:
type  TInfo    =  integer;
      PNode = ^TNode;
      TNode =  record
         Info: TInfo;
         Next,          // указатель на следующий элемент
         Pred: PNode;   // указатель на предыдущий элемент
       end;


var
  Form1: TForm1;
      L:PNode;
      f1,f2:textfile;

implementation

{$R *.dfm}
//------------------Процедура удаления-------------
Procedure dele(var t:PNode;w:integer);
var
  z:PNode;
begin
  if t<>nil then
    if t^.Info=w then
      begin
        t:=t.Next;
        z:=t.Pred;
        z.Pred.Next:=t;
        t.Pred:=z.Pred;
        Dispose(z);
      end
    else
    dele(t.next,w);
end;

//-----------Вывод-------------
Procedure vihod(t:PNode);
begin
  if t<>nil then
  begin
    write(f2,t.Info:6);
    vihod(t.next);
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  w,i:integer;
  t,r:PNode;
begin
  w:=StrToInt(Edit1.Text);
  assignfile(f1,'file.txt');
  assignfile(f2,'file2.txt');
  reset(f1);
  r:=nil;
  while not EOF(f1) do
  begin
  if r=nil then
  begin
    new(r);
    with r^ do
    begin
      read(f1,r.Info);
      Next:=nil;
      Pred:=nil;
    end;
  end
  else
  begin
    new(t);               // создание нового элемента
  with t^ do begin
    read(f1,t.Info);
    Next:=r^.Next;
    Pred:=r;
  end;
  r^.Next^.Pred:=t;       // меняется значение поля Pred
  r^.Next:=t;

  end;

  end;
  {L.next:=nil;}
  closefile(f1);
  {if proverka(r,w) then}
    dele ( t, w);
  rewrite(f2);
  vihod(t);
  closefile(f2);
  Memo1.Lines.LoadFromFile('file2.txt');
end;
//----------------Открытие файла----------------
procedure TForm1.Open1Click(Sender: TObject);
var
  str:string;
  i:integer;
begin
  if OpenDialog1.Execute then
    AssignFile(f1,'file.txt');
    Reset(f1);
    while not EOF(f1) do
   begin
     Readln(f1,Str);
     Memo1.Lines.Add(Str);
     if Memo1.Lines[i]='' then
     Memo1.Lines.Delete(i);
   end;
end;



end.

Последний раз редактировалось Stilet; 01.03.2010 в 09:00.
dip вне форума Ответить с цитированием
Старый 02.03.2010, 12:16   #4
dip
Пользователь
 
Регистрация: 23.10.2009
Сообщений: 11
По умолчанию

вот я так строю список..но не получается..у меня задине написать рекурсию на удаление числа...процедура сама вроде правильная,а вот построение самого списка нет
dip вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленный список xOptimuSx Общие вопросы C/C++ 1 23.01.2010 17:41
Двунаправленный список на С++ JeyKip Помощь студентам 0 11.01.2010 23:04
Двунаправленный список F_A_N_Alex Помощь студентам 0 01.10.2009 00:35
Двунаправленный список Chudo4258 Помощь студентам 6 09.05.2009 07:16
Линейный двунаправленный список Seg_62 Паскаль, Turbo Pascal, PascalABC.NET 4 28.08.2008 21:02