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.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.Add('В начало');
RadioGroup1.Items.Add('В конец');
RadioGroup1.Items.Add('В любое другое место'); end;
4: begin if RadioGroup1.ItemIndex = 2 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Чем отличается однонаправленный список от двунаправленного?');
RadioGroup1.Items.Add('Существует связь с предыдущим элементом');
RadioGroup1.Items.Add('Не существует связь с предыдущим элементом');
RadioGroup1.Items.Add('Не отличаются'); end;
5: begin if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Какой элемент считывается из стека?');
RadioGroup1.Items.Add('Последний');
RadioGroup1.Items.Add('Любой');
RadioGroup1.Items.Add('Первый'); end;
6: begin if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Чем отличается дек от стека?');
RadioGroup1.Items.Add('Добавление в любом место. Удаление из начала');
RadioGroup1.Items.Add('Добавление в начало. Удаление из любого места');
RadioGroup1.Items.Add('Все включения исключения происходят на обоих его концах'); end;
7: begin if RadioGroup1.ItemIndex = 2 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Откуда считывается элемент из очереди?');
RadioGroup1.Items.Add('С конца');
RadioGroup1.Items.Add('С начала');
RadioGroup1.Items.Add('Из люього места'); end;
8: begin if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Куда добавляется элемент в стек?');
RadioGroup1.Items.Add('В любое место'); end;
9: begin if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Какую ссылку содержит последний элемент циклического списка?');
RadioGroup1.Items.Add('На первый элемент');
RadioGroup1.Items.Add('На предыдущий элемент');
RadioGroup1.Items.Add('NIL'); end;
10: begin if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Если все включения и исключения происходят на одном конце списка, то это ...');
11: begin if RadioGroup1.ItemIndex = 3 then Inc(NumberTrueAnswer);
Memo1.Lines.Add('Если последний элемент имеет ссылку на первый элемент, то это ...');
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;
-----------------------
4
2
1
3
5
Включить
Исключить
Конец
Третий
Второй
N
Включить или исключить
Новый
Третий сверху
Начало
Низ
Верх
Второй сверху
Рис. 1 Стек, представленный в виде железнодорожного разъезда
Правый конец
Второй справа
Второй слева
Левый конец
Р
*
Указываемый объект
Содержимое
Адрес
Связанное распределение
Последовательное распределение
B:
C:
D:
E:
Л:
B
C
D
E
Л
Элемент 1
Элемент 2
Элемент 3
Элемент 4
Элемент 5
L0 + c:
L0 + 2c:
L0 + 3c:
L0 + 4c:
L0 + 5c:
FIRST
Элемент [pic]
LINK
INFO
PTR
Голова списка
а
…
nil
??????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????? ?????????????????????
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9