Рефераты. Линейные списки. Стек. Дек. Очередь p> Result := PointerDeckEnd^.Info; q := PointerDeckEnd;

PointerDeckEnd := q^.Prev; 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; //
[pic]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.

-----------------------

4

2

1

3

5

Включить

Исключить

Конец

Третий

Второй

1

3

5

4

2

2

1

3

5

N

4

Включить или исключить

Новый

4

3

2

1

Третий сверху

Новый

Конец

Третий

Второй

Начало

Низ

Верх

Включить или исключить

Второй сверху

Рис. 1 Стек, представленный в виде железнодорожного разъезда

Включить или исключить

Правый конец

Второй справа

Второй слева

Левый конец

N

N

4

3

2

1

Р

*

Р

Указываемый объект

*

Содержимое

Адрес

Связанное распределение

Содержимое

Адрес

Последовательное распределение

B:

C:

D:

E:

Л:

B

C

D

E

Л

Элемент 1

Элемент 2

Элемент 3

Элемент 4

Элемент 5

L0 + c:

L0 + 2c:

L0 + 3c:

L0 + 4c:

L0 + 5c:

Элемент 1

Элемент 2

Элемент 3

Элемент 4

Элемент 5

FIRST

Элемент 5

Элемент 4

Элемент 3

Элемент 2

Элемент 1

Элемент [pic]

FIRST

Элемент 5

Элемент 4

Элемент 3

Элемент 2

Элемент 1

LINK

INFO

PTR

Голова списка

а

а

а

а

nil

3

1

2

4

5

Начало

???????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????
?????????????????????



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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.