RSS    

   Реферат: Линейные списки. Стек. Дек. Очередь

  qList := ListBegin;

  i := 0;

  while i <> ListPos do

    begin

      qList := qList^.Next;

      Inc(i);

    end;

  if qList <> nil then

    begin

      if qList^.Next <> nil then Inc(ListPos);

      i := 0;

      j := 0;

      while i < ListPos do

        begin

          Inc(j);

          if Edit1.Text[j] = ' ' then Inc(i);

        end;

      Image1.Left := Round(9 + (j + 1) * 7.5);

    end;

end;

procedure TForm1.Button7Click(Sender: TObject);

var

  qListTwo: ListTwo;

  i, j: Integer;

begin

  StatusBar1.Panels[0].Text := '';

  qListTwo := ListTwoBegin;

  i := 0;

  if ListTwoPos <> 0 then dec(ListTwoPos);

  i := 0;

  j := 0;

  while i < ListTwoPos do

    begin

      Inc(j);

      if Edit2.Text[j] = ' ' then Inc(i);

    end;

  if ListTwoPos = 0 then Image2.Left := 9

  else Image2.Left := Round(9 + (j + 1) * 7.5);

end;

procedure TForm1.Button8Click(Sender: TObject);

var

  qListTwo: ListTwo;

  i, j: Integer;

begin

  StatusBar1.Panels[0].Text := '';

  qListTwo := ListTwoBegin;

  i := 0;

  while i <> ListTwoPos do

    begin

      qListTwo := qListTwo^.Next;

      Inc(i);

    end;

  if qListTwo <> nil then

    begin

      if qListTwo^.Next <> nil then Inc(ListTwoPos);

      i := 0;

      j := 0;

      while i < ListTwoPos do

        begin

          Inc(j);

          if Edit2.Text[j] = ' ' then Inc(i);

        end;

      Image2.Left := Round(9 + (j + 1) * 7.5);

    end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  DestroyList(ListBegin);

  DestroyListTwo(ListTwoBegin);

  DestroyList(QueueBegin);

  DestroyList(Stack);

  DestroyListTwo(DeckBegin);

  Application.Terminate;

end;

procedure TForm1.Button15Click(Sender: TObject);

begin

  StatusBar1.Panels[0].Text := 'Нельзя !!!';

  Memo1.Lines.Add('В стеке нельзя возвращаться в начало т.к. указатель указывает сразу на начало;');

end;

procedure TForm1.Button16Click(Sender: TObject);

var

  i: Integer;

  s: string;

begin

  StatusBar1.Panels[0].Text := '';

  GetStack(Stack);

  if Stack <> nil then

    begin

      while Edit4.Text[StackPos] <> ' ' do Inc(StackPos);

      Inc(StackPos);

      s := Edit4.Text;

      for i := 1 to StackPos - 1 do

        if s[i] <> ' ' then s[i] := ' ';

      Edit4.Text := s;

    end

  else

    begin

      ShowMessage('Стек пуст');

      Edit4.Text := '';

      Image4.Hide;

      Button14.Enabled := False;

      Button15.Enabled := False;

      Button16.Enabled := False;

      StatusBar1.Panels[1].Text := 'Стек пуст';

    end;

  Image4.Left := Round(StackPos * 7);

end;

procedure TForm1.Button20Click(Sender: TObject);

var

  i: Integer;

  s: string;

begin

  StatusBar1.Panels[0].Text := '';

  GetDeckBegin(DeckBegin);

  if DeckBegin <> nil then

    begin

      while Edit5.Text[DeckBeginPos] <> ' ' do Inc(DeckBeginPos);

      Inc(DeckBeginPos);

      s := Edit5.Text;

      for i := 1 to DeckBeginPos - 1 do

        if s[i] <> ' ' then s[i] := ' ';

      Edit5.Text := s;

    end;

  if (DeckBegin = nil) and (DeckBegin = DeckEnd) then

    begin

      ShowMessage('Дек пуст');

      Edit5.Text := '';

      Image5.Hide;

      Image6.Hide;

      Button18.Enabled := False;

      Button19.Enabled := False;

      Button20.Enabled := False;

      StatusBar1.Panels[1].Text := 'Дек пуст';

    end;

  Image5.Left := Round(DeckBeginPos * 7);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

  Windows.SetFocus(Button21.Handle);

end;

procedure TForm1.Button19Click(Sender: TObject);

var

  i, a: Integer;

  s: string;

begin

  StatusBar1.Panels[0].Text := '';

  GetDeckEnd(DeckEnd);

  if DeckEnd <> nil then

    begin

      while Edit5.Text[DeckEndPos] <> ' ' do Dec(DeckEndPos);

      Dec(DeckEndPos);

      s := Edit5.Text;

      for i := DeckEndPosition downto DeckEndPos + 1 do

        if s[i] <> ' ' then s[i] := ' ';

      Edit5.Text := s;

      //удаляем все пробелы конце строки

      s := '';

      i := Length(Edit5.Text) - 1;

      while Edit5.Text[i] = ' ' do Dec(i);

      for a := 1 to i do s := s + Edit5.Text[a];

      Edit5.Text := s;

    end;

  if (DeckEnd = nil) and (DeckBegin = DeckEnd) then

    begin

      ShowMessage('Дек пуст');

      Edit5.Text := '';

      Image5.Hide;

      Image6.Hide;

      Button19.Enabled := False;

      Button20.Enabled := False;

      StatusBar1.Panels[1].Text := 'Дек пуст';

    end;

  Image6.Left := Round(DeckEndPos * 7 - 9);

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

  Form5.Show;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

  DeleteFromList(ListPos);

  DoNewEditList;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

  DeleteFromListTwo(ListTwoPos);

  DoNewEditListTwo;

end;

procedure TForm1.Button10Click(Sender: TObject);

var

  i, a: Integer;

  s1, s2: string;

begin

  GetQueue(QueueBegin);

  if QueueBegin <> nil then

    begin

      i := QueuePos;

      while (Edit3.Text[i] <> ' ') and (i <= Length(Edit3.Text)) do Inc(i);

      Inc(i);

      s1 := '';

      s2 := '';

      for a := 1 to QueuePos - 1 do s1 := s1 + Edit3.Text[a];

      for a := i to Length(Edit3.Text) do s2 := s2 + Edit3.Text[a];

      Edit3.Text := s1 + s2;

    end;

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

  Form4.Show;

end;

procedure TForm1.Button14Click(Sender: TObject);

var

  i, a: Integer;

  s1, s2: string;

begin

  GetStack(Stack);

  i := StackPos;

  while (Edit4.Text[i] <> ' ') and (i <= Length(Edit4.Text)) do Inc(i);

  Inc(i);

  s1 := '';

  s2 := '';

  for a := 1 to StackPos - 1 do s1 := s1 + Edit4.Text[a];

  for a := i to Length(Edit4.Text) do s2 := s2 + Edit4.Text[a];

  Edit4.Text := s1 + s2;

end;

procedure TForm1.Button13Click(Sender: TObject);

begin

  Form6.Show;

end;

procedure TForm1.Button17Click(Sender: TObject);

begin

  Form7.Show;

end;

procedure TForm1.Button18Click(Sender: TObject);

begin

  Form8.Show;

end;

procedure TForm1.Button26Click(Sender: TObject);

begin

  StatusBar1.Panels[0].Text := 'Нельзя !!!';

  Memo1.Lines.Add('В цикл. списке нельзя перемещаться назад, т.к. по сути цикл. список это однонаправ. список и следовательно связь существует только в одну сторону;');

end;

procedure TForm1.Button25Click(Sender: TObject);

var

  qRoundList: List;

  i, j: Integer;

  Count: Integer;

begin

  StatusBar1.Panels[0].Text := '';

  qRoundList := RoundList^.Next;

  // Подсчет кол-ва елементов в списке

  Count := 1;

  while qRoundList <> RoundList do

    begin

      Inc(Count);

      qRoundList := qRoundList^.Next;

    end;

  qRoundList := RoundList;

  i := 0;

  while i <> RoundListPos do

    begin

      qRoundList := qRoundList^.Next;

      Inc(i);

    end;

  if qRoundList <> nil then

    begin

      if qRoundList^.Next <> nil then Inc(RoundListPos);

      if RoundListPos > Count - 1 then RoundListPos := 0;

      i := 0;

      j := 0;

      while i < RoundListPos do

        begin

          Inc(j);

          if Edit7.Text[j] = ' ' then Inc(i);

        end;

      if RoundListPos = 0 then j := -1;

      Image7.Left := Round(9 + (j + 1) * 7.5);

    end;

end;

procedure TForm1.Button23Click(Sender: TObject);

begin

  Form9.Show;

end;

procedure TForm1.Button24Click(Sender: TObject);

begin

  if RoundList <> nil then

    begin

      DeleteFromRoundList(RoundListPos);

      if RoundList <> nil then DoNewEditRoundList;

    end

  else

    begin

      Edit7.Text := '';

      ShowMessage('Циклический список пуст');

      Button24.Enabled := False;

      Button25.Enabled := False;

      Button26.Enabled := False;

      Image7.Hide;

    end;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

  Close;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

  AboutBox.Visible := True;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

  Form10.Visible := True;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.