RSS    

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

      if PointerDeckEnd <> nil then PointerDeckEnd^.Next := nil;

      if q <> nil then Dispose(q);

    end

  else

    begin

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

      Form1.Edit5.Text := '';

      Form1.Button18.Enabled := False;        

      Form1.Button19.Enabled := False;

      Form1.Button20.Enabled := False;

      Form1.Image5.Hide;

      Form1.Image6.Hide;

    end;

end;

procedure CreateLists; //процедура создания всех списков

var

  i: Integer;

  X: Integer;

  Uk, q: List;

  UkTwo, qTwo: ListTwo;

  UkQueue, qQueue: List;

  qStack: List;

  qDeckBegin, qDeckEnd: ListTwo;

begin

  X := Random(101); //Определяем значение первого элемента

  Uk := nil;            //////////////////////////

  q := nil;             //                      //

  UkTwo := nil;         // НАЧАЛЬНЫЕ УСТАНОВКИ: //

  qTwo := nil;          //                      //

  UkQueue := nil;       // все указатели = nil  //

  qQueue := nil;        //                      //

  qStack := nil;        //                      //

  qDeckBegin := nil;    //                      //

  qDeckEnd := nil;      //////////////////////////

// Destroy for every lists

  if ListBegin <> nil then DestroyList(ListBegin);

  if ListTwoBegin <> nil then DestroyListTwo(ListTwoBegin);

  if QueueBegin <> nil then DestroyList(QueueBegin);

  if Stack <> nil then DestroyList(Stack);

  if DeckBegin <> nil then DestroyListTwo(DeckBegin);

  if RoundList <> nil then DestroyRoundList(RoundList);

  AddToList(X, Uk);                        //

  AddToListTwo(X, UkTwo);                  // Добавляем Х в

  AddToQueue(X, UkQueue);                  // каждый список

  AddToStack(X, qStack);                   //

  AddToDeck(X, qDeckBegin, qDeckEnd, 0);   //

  AddToRoundList(X, RoundList);            ///////////////////

  Unit1.Form1.Edit6.Text := IntToStr(X);

  q := Uk;            //

  qTwo := UkTwo;      // Формируем указатели на начало списков

  qQueue := UkQueue;  //

  for i :=  to 9 do       //Дальнейшее формирование списков

    begin

      X := Random(101);

      AddToList(X, q);

      AddToListTwo(X, qTwo);

      AddToQueue(X, qQueue);

      AddToStack(X, qStack);

      AddToDeck(X, qDeckBegin, qDeckEnd, 0);

      AddToRoundList(X, RoundList);

      Unit1.Form1.Edit6.Text := Unit1.Form1.Edit6.Text + ' ' + IntToStr(X);

    end;

  ListBegin := Uk;          //////////////////////////////////////

  ListTwoBegin := UkTwo;    //                                  //

  QueueBegin := UkQueue;    //                                  //

  Stack := qStack;          //  Определяем указатели все списки //

  DeckBegin := qDeckBegin;  //                                  //

  DeckEnd := qDeckEnd;      //                                  //

  RoundList := RoundList^.Next  //////////////////////////////////

end;

end.

unit Unit16; //Тест

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, ExtCtrls;

type

  TForm16 = class(TForm)

    Memo1: TMemo;

    Panel1: TPanel;

    Button1: TButton;

    RadioGroup1: TRadioGroup;

    Button2: TButton;

    procedure RadioGroup1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

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

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form16: TForm16;

  NumberQuestion: Integer = 0;

  NumberTrueAnswer: Integer = 0;

  ff: Boolean = True;

implementation

uses Unit1, Un18_Lab;

{$R *.DFM}

procedure TForm16.RadioGroup1Click(Sender: TObject);

begin

  Button1.Enabled := True;

  Button1.SetFocus;

end;

procedure TForm16.Button2Click(Sender: TObject);

begin

  Form16.Hide;

  Form1.Show;

end;

procedure TForm16.Button1Click(Sender: TObject);

begin

  Memo1.Lines.Clear;

  Button1.Enabled := False;

  Inc(NumberQuestion);

  case NumberQuestion of

    1:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Однонаправленный список - это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Список, элементы которого имеют связь со следующим и предыдущим элементом');

        RadioGroup1.Items.Add('Список, элементы которого имеют связь со следующим элементом');

        RadioGroup1.Items.Add('Список, элементы которого не имеют связи');

      end;

    2:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Если элемент содержит ссылки на следующий и предыдущий элемент, то это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('однонаправленный список');

        RadioGroup1.Items.Add('двунаправленный список');

        RadioGroup1.Items.Add('очередь');

        RadioGroup1.Items.Add('стек');

        RadioGroup1.Items.Add('дек');

        RadioGroup1.Items.Add('циклический список');

      end;

    3:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Куда добавляется элемент в двунаправленный список?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('В начало');

        RadioGroup1.Items.Add('В конец');

        RadioGroup1.Items.Add('В любое другое место');

      end;

    4:

      begin

        if RadioGroup1.ItemIndex = 2 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Чем отличается однонаправленный список от двунаправленного?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Существует связь с предыдущим элементом');

        RadioGroup1.Items.Add('Не существует связь с предыдущим элементом');

        RadioGroup1.Items.Add('Не отличаются');

      end;

    5:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Какой элемент считывается из стека?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Последний');

        RadioGroup1.Items.Add('Любой');

        RadioGroup1.Items.Add('Первый');

      end;

    6:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Чем отличается дек от стека?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Добавление в любом место. Удаление из начала');

        RadioGroup1.Items.Add('Добавление в начало. Удаление из любого места');

        RadioGroup1.Items.Add('Все включения исключения происходят на обоих его концах');

      end;

    7:

      begin

        if RadioGroup1.ItemIndex = 2 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Откуда считывается элемент из очереди?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('С конца');

        RadioGroup1.Items.Add('С начала');

        RadioGroup1.Items.Add('Из люього места');

      end;

    8:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Куда добавляется элемент в стек?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('В конец');

        RadioGroup1.Items.Add('В начало');

        RadioGroup1.Items.Add('В любое место');

      end;

    9:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Какую ссылку содержит последний элемент циклического списка?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('На первый элемент');

        RadioGroup1.Items.Add('На предыдущий элемент');

        RadioGroup1.Items.Add('NIL');

      end;

    10:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Если все включения и исключения происходят на одном конце списка, то это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('однонаправленный список');

        RadioGroup1.Items.Add('двунаправленный список');

        RadioGroup1.Items.Add('очередь');

        RadioGroup1.Items.Add('стек');

        RadioGroup1.Items.Add('дек');

        RadioGroup1.Items.Add('циклический список');

      end;

    11:

      begin

        if RadioGroup1.ItemIndex = 3 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Если последний элемент имеет ссылку на первый элемент, то это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('однонаправленный список');

        RadioGroup1.Items.Add('двунаправленный список');

        RadioGroup1.Items.Add('очередь');

        RadioGroup1.Items.Add('стек');

        RadioGroup1.Items.Add('дек');

        RadioGroup1.Items.Add('циклический список');

      end;

    12:

      begin

        if RadioGroup1.ItemIndex = 5 then Inc(NumberTrueAnswer);

        Button1.Hide;

        if NumberTrueAnswer >= 10 then ShowMessage('Ваша оценка - ОТЛИЧНО!');

        if (NumberTrueAnswer >= 8) and (NumberTrueAnswer < 10) then ShowMessage('Ваша оценка - ХОРОШО!');

        if (NumberTrueAnswer >= 6) and (NumberTrueAnswer < 8) then ShowMessage('Ваша оценка - ТРИ!');

        if NumberTrueAnswer < 6 then

          begin

            ShowMessage('Тебе однозначно нужно почитать теорию. Твоя оценка - Два!!!');

            ff := False;

          end;

        Form16.Hide;

        Form1.Show;

        if not ff then Form18.Show;

      end;

  end;

end;

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

begin

  Form16.Hide;

  Form1.Show;

  if not ff then Form18.Show;

end;

end.


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


Новости


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

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

Пока нет

Новости в Twitter и Facebook

                   

Новости

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.