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

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

Button27: TButton;

Button28: TButton;

Button30: TButton;

Button29: TButton;

Button31: TButton;

Button32: TButton;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N11: TMenuItem;

N21: TMenuItem;

N31: TMenuItem;

N41: TMenuItem;

N51: TMenuItem;

N61: TMenuItem;

N71: TMenuItem;

Button33: TButton;

N9: TMenuItem; procedure Button12Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button22Click(Sender: TObject); procedure Button21Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button15Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure Button20Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button19Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure Button17Click(Sender: TObject); procedure Button18Click(Sender: TObject); procedure Button26Click(Sender: TObject); procedure Button25Click(Sender: TObject); procedure Button23Click(Sender: TObject); procedure Button24Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure Button27Click(Sender: TObject); procedure Button30Click(Sender: TObject); procedure Button29Click(Sender: TObject); procedure Button31Click(Sender: TObject); procedure Button32Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure Button33Click(Sender: TObject); procedure N21Click(Sender: TObject); procedure N31Click(Sender: TObject); procedure N41Click(Sender: TObject); procedure N51Click(Sender: TObject); procedure N61Click(Sender: TObject); procedure N71Click(Sender: TObject); procedure N9Click(Sender: TObject); private public end;

procedure DoNewEditList; procedure DoNewEditListTwo; procedure DoNewEditRoundList;

var
Form1: TForm1;
ListBegin: List; //указатель на однонапр. список
ListPos: Integer; //позиция в однонапр. списке
ListTwoBegin: ListTwo; //указатель на двунапр. список
ListTwoPos: Integer; //позиция в двунапр. списке
QueueBegin: List; //указатель на очередь
QueuePos: Integer; //"позиция в очереди" (содержит кол-во символов в Edit до первого элемента)
Stack: List; //указатель на стек
StackPos: Integer; //"позиция в стеке" (содержит кол-во символов в
Edit до первого элемента)
DeckBegin, DeckEnd: ListTwo; //указатели на начало и конец дека
DeckBeginPos, DeckEndPos: Integer; //"позиции в деке" (DeckEndPos содержит кол-во символов в Edit от DeckEndPosition до последнего элемента)
DeckEndPosition: Integer; //позиция последнего элемента в деке
(содержит первоначальное кол-во символов в Edit до последнего элемента)
RoundList: List; //указатель в циклическом списке
RoundListPos: Integer; //"позиция в циклическом списке"

implementation

uses O_programm, Help, Un18_Lab;

{$R *.DFM}

procedure DoNewEditList; var q: List; begin q := ListBegin;
Form1.Edit1.Text := ''; while q nil do begin

Form1.Edit1.Text := Form1.Edit1.Text + ' ' + IntToStr(q^.Info); q := q^.Next; end; end;

procedure DoNewEditListTwo; var q: ListTwo; begin q := ListTwoBegin;
Form1.Edit2.Text := ''; while q nil do begin

Form1.Edit2.Text := Form1.Edit2.Text + ' ' + IntToStr(q^.Info); q := q^.Next; end; end;

procedure DoNewEditRoundList; var q: List; begin q := RoundList^.Next;
Form1.Edit7.Text := ' ' + IntToStr(RoundList^.Info); while q RoundList do begin

Form1.Edit7.Text := Form1.Edit7.Text + ' ' + IntToStr(q^.Info); q := q^.Next; end; end;

procedure TForm1.Button12Click(Sender: TObject); var i, j: Integer; s: string; begin
StatusBar1.Panels[0].Text := '';
GetQueue(QueueBegin); if QueueBegin nil then begin while Edit3.Text[QueuePos] ' ' do Inc(QueuePos);

Inc(QueuePos); s := Edit3.Text; for i := 1 to QueuePos - 1 do if s[i] ' ' then s[i] := ' ';

Edit3.Text := s; end else begin

ShowMessage('Очередь пуста');

Edit3.Text := '';

Image3.Hide;

Button10.Enabled := False;

Button11.Enabled := False;

Button12.Enabled := False;

StatusBar1.Panels[1].Text := 'Очередь пуста'; end;
Image3.Left := Round(QueuePos * 7); end;

procedure TForm1.Button11Click(Sender: TObject); begin
StatusBar1Panels[0].Text := 'Нельзя !!!';
Memo1.Lines.Add('В очерди нельзя возвращаться в начало т.к. указатель указывает сразу на начало;'); end;

procedure TForm1.Button22Click(Sender: TObject); begin
Application.Terminate; end;

procedure TForm1.Button21Click(Sender: TObject); var q: List; qTwo: ListTwo; qQueue, rQueue: List;
Info: Integer;
FlagList: Boolean; qStack: List; qDeckBegin, qDeckEnd: ListTwo; qRoundList: List; // начало циклич. списка

begin
Button1.Enabled := True;
Button2.Enabled := True;
Button3.Enabled := True;
Button4.Enabled := True;
Button5.Enabled := True;
Button6.Enabled := True;
Button7.Enabled := True;
Button8.Enabled := True;
Button9.Enabled := True;
Button10.Enabled := True;
Button11.Enabled := True;
Button12.Enabled := True;
Button13.Enabled := True;
Button14.Enabled := True;
Button15.Enabled := True;
Button16.Enabled := True;
Button17.Enabled := True;
Button18.Enabled := True;
Button19.Enabled := True;
Button20.Enabled := True;
Button23.Enabled := True;
Button24.Enabled := True;
Button25.Enabled := True;
Button26.Enabled := True;
Image1.Visible := True;
Image2.Visible := True;
Image3.Visible := True;
Image4.Visible := True;
Image5.Visible := True;
Image6.Visible := True;
Image7.Visible := True;
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Edit5.Text := '';
Edit7.Text := '';
StatusBar1.Panels[0].Text := '';
StatusBar1.Panels[1].Text := '';
CreateLists; q := ListBegin; qTwo := ListTwoBegin; while q nil do begin

Edit1.Text := Edit1.Text + ' ' + IntToStr(q^.Info); q := q^.Next; end;
Image1.Left := 9;
ListPos := 0; while qTwo nil do begin

Edit2.Text := Edit2.Text + ' ' + IntToStr(qTwo^.Info); qTwo := qTwo^.Next; end;
Image2.Left := 9;
ListTwoPos := 0;
FlagList := True; while QueueBegin nil do begin

Info := GetQueue(QueueBegin);

Edit3.Text := Edit3.Text + ' ' + IntToStr(Info);

AddToQueue(Info, qQueue); if FlagList then begin

FlagList := False; rQueue := qQueue; end; end;
QueueBegin := rQueue;
QueuePos := 2;
Image3.Left := 9; while Stack nil do begin

Info := GetStack(Stack);

Edit4.Text := Edit4.Text + ' ' + IntToStr(Info);

AddToStack(Info, qStack); end;
Stack := qStack;
Memo1.Lines.Add('В стеке числа идут на оборот т.к. элементы считываются из конца стека.');
StackPos := 2;
Image4.Left := 9; while DeckEnd nil do begin

Info := GetDeckEnd(DeckEnd);

Edit5.Text := Edit5.Text + ' ' + IntToStr(Info);

AddToDeck(Info, qDeckBegin, qDeckEnd, 0); end;
DeckBegin := qDeckBegin;
DeckEnd := qDeckEnd;
DeckBeginPos := 2;
Image5.Left := 9;
Memo1.Lines.Add('Дек прочитывался с начала, поэтому элементы записались по порядку.');
DeckEndPosition := 1; while Edit5.Text[DeckEndPosition] '' do Inc(DeckEndPosition);
Image6.Left := Round(9 + DeckEndPosition * 6.2);
Dec(DeckEndPosition);
DeckEndPos := DeckEndPosition; qRoundList := RoundList^.Next;
Edit7.Text := ' ' + IntToStr(RoundList^.Info); while qRoundList RoundList do begin

Edit7.Text := Edit7.Text + ' ' + IntToStr(qRoundList^.Info); qRoundList := qRoundList^.Next; end;
Image7.Left := 9;
RoundListPos := 0; end;

procedure TForm1.Button1Click(Sender: TObject); begin
Form3.Show; end;

procedure TForm1.Button3Click(Sender: TObject); begin
StatusBar1.Panels[0].Text := 'Нельзя !!!';
Memo1.Lines.Add('В однонаправленном списке нельзя перемещаться назад, т.к. связь существует толко в одну сторону;'); end;

procedure TForm1.Button4Click(Sender: TObject); var qList: List; i, j: Integer; begin
StatusBar1.Panels[0].Text := ''; 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;

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



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