Смекни!
smekni.com

Линейные списки. Стек. Дек. Очередь (стр. 8 из 10)

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;

end;

procedure TForm1.Button27Click(Sender: TObject);

begin

Form11.Show;

end;

procedure TForm1.Button30Click(Sender: TObject);

begin

Form12.Show;

end;

procedure TForm1.Button29Click(Sender: TObject);

begin

Form13.Show;

end;

procedure TForm1.Button31Click(Sender: TObject);

begin

Form14.Show;

end;

procedure TForm1.Button32Click(Sender: TObject);

begin

Form15.Show;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

Form1.Hide;

Form16.Show;

N8.Enabled := False;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add(' Лабораторная работа №1.');

Memo1.Lines.Add(' "Списки"');

Memo1.Lines.Add('______________________________________________________________');

Memo1.Lines.Add('1. Нажмите кнопку "Теория" для получения информации о списках.');

Memo1.Lines.Add(' Внимательно изучите теоретический материал.');

Memo1.Lines.Add('');

Memo1.Lines.Add('2. На листе формата А4, опишите ход проделанной работы.');

Memo1.Lines.Add(' Ответьте на поставленные вопросы.');

Memo1.Lines.Add(' 1) Что такое линейный список?');

Memo1.Lines.Add(' 2) Какие операции можно выполнить с линейным списком?');

Memo1.Lines.Add(' 3) Какие существую еще списки?');

Memo1.Lines.Add(' 4) Что представляет из себя связанное распределение?');

Memo1.Lines.Add(' 5) Чем отличается связанное распределение от последовательного?');

Memo1.Lines.Add(' 6) Что такое динамические переменные? Функции new и nil.');

end;

procedure TForm1.Button33Click(Sender: TObject);

begin

Form17.Show;

end;

procedure TForm1.N21Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add(' Лабораторная работа №2.');

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

Memo1.Lines.Add('______________________________________________________________');

Memo1.Lines.Add('1. Нажмите кнопку "Теория" для однонаправленного и ');

Memo1.Lines.Add(' двунаправленного списка.');

Memo1.Lines.Add(' Внимательно изучите теоретический материал.');

Memo1.Lines.Add('');

Memo1.Lines.Add('2. Нажмите кнопку "Обновить" для формирования списков.');

Memo1.Lines.Add(' Кнопки "<< и >>" служат для перемещения курсора по списку.');

Memo1.Lines.Add(' а) Переместитесь влево до 3, 5 и последнего элемента;');

Memo1.Lines.Add(' б) Переместитесь вправо до первого элемента (см. коментарии);');

Memo1.Lines.Add(' Кнопка "Добавить" служит для добавления элемента в список.');

Memo1.Lines.Add(' а) Добавьте после 3, 5, 7 элемента цифру 33 в обоих списках;');

Memo1.Lines.Add(' б) Добавте 1-м и 3-м элементом цифру 55 в двунаправленном списке;');

Memo1.Lines.Add(' Кнопка "Удалить" служит для удаления элемента из списка.');

Memo1.Lines.Add(' а) Удалите 3, 5, 7 элементы в однонаправленном списке;');

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

Memo1.Lines.Add('');

Memo1.Lines.Add('3. На листе формата А4, опишите ход проделанной работы.');

Memo1.Lines.Add(' Ответьте на поставленные вопросы:');

Memo1.Lines.Add(' 1) Обратите внимание как перемещается курсор?');

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

Memo1.Lines.Add(' 3) Можно ли добавить элемент в любое место списка?');

Memo1.Lines.Add(' 4) Можно ли удалить любой элемент из списка?');

end;

procedure TForm1.N31Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add(' Лабораторная работа №3.');

Memo1.Lines.Add(' "Циклический список"');

Memo1.Lines.Add('______________________________________________________________');

Memo1.Lines.Add('1. Нажмите кнопку "Теория" для циклического списка?');

Memo1.Lines.Add(' Внимательно изучите теоретический материал.');

Memo1.Lines.Add('');

Memo1.Lines.Add('2. Нажмите кнопку "Обновить" для формирования списков.');

Memo1.Lines.Add(' Кнопки "<< и >>" служат для перемещения курсора по списку.');

Memo1.Lines.Add(' а) Переместитесь вправо до 3, 5, последнего, первого элемента;');

Memo1.Lines.Add(' б) Переместитесь влево (см. коментарии);');

Memo1.Lines.Add(' Кнопка "Добавить" служит для добавления элемента в список.');

Memo1.Lines.Add(' а) Добавьте 3, 5, 1-м элементами число 44;');

Memo1.Lines.Add(' б) Добавьте после 2, 4, 1-го элемента число 0;');

Memo1.Lines.Add(' Кнопка "Удалить" служит для удаления элемента из списка.');

Memo1.Lines.Add(' Удалите 3, 5, 1, 4 элементы;');

Memo1.Lines.Add('');

Memo1.Lines.Add('3. На листе формата А4, опишите ход проделанной работы.');

Memo1.Lines.Add(' Ответьте на поставленные вопросы:');

Memo1.Lines.Add(' 1) Обратите внимание как перемещается курсор?');

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

Memo1.Lines.Add(' 3) Что называется головой и хвостом списка?');

end;

procedure TForm1.N41Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add(' Лабораторная работа №4.');

Memo1.Lines.Add(' "Очередь"');

Memo1.Lines.Add('______________________________________________________________');

Memo1.Lines.Add('1. Нажмите кнопку "Теория" для очереди.');

Memo1.Lines.Add(' Внимательно изучите теоретический материал.');

Memo1.Lines.Add('');

Memo1.Lines.Add('2. Нажмите кнопку "Обновить" для формирования списков.');

Memo1.Lines.Add(' Кнопки "<< и >>" служат для перемещения курсора по очереди.');

Memo1.Lines.Add(' а) Переместитесь вправо до 3 элемента;');

Memo1.Lines.Add(' б) Переместитесь влево (см. коментарии);');

Memo1.Lines.Add(' Кнопка "Добавить" служит для добавления элемента в очередь.');

Memo1.Lines.Add(' а) Добавьте 1, 4, 5-м элементами число 99;');

Memo1.Lines.Add(' б) Добавьте последним число 999;');

Memo1.Lines.Add(' Кнопка "Удалить" служит для удаления элемента из очереди.');

Memo1.Lines.Add(' Удалите 1, 2, 3 элементы;');

Memo1.Lines.Add('');

Memo1.Lines.Add('3. На листе формата А4, опишите ход проделанной работы.');

Memo1.Lines.Add(' Ответьте на поставленные вопросы:');

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

Memo1.Lines.Add(' 2) В чем различие и сходство очереди и однонаправленного списка?');

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

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

end;

procedure TForm1.N51Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add(' Лабораторная работа №5.');

Memo1.Lines.Add(' "Стек"');

Memo1.Lines.Add('______________________________________________________________');

Memo1.Lines.Add('1. Нажмите кнопку "Теория" для стека.');

Memo1.Lines.Add(' Внимательно изучите теоретический материал.');

Memo1.Lines.Add('');

Memo1.Lines.Add('2. Нажмите кнопку "Обновить" для формирования списков.');

Memo1.Lines.Add(' Кнопки "<< и >>" служат для перемещения курсора в стеке.');

Memo1.Lines.Add(' а) Переместитесь вправо до 4 элемента;');

Memo1.Lines.Add(' б) Переместитесь влево (см. коментарии);');

Memo1.Lines.Add(' Кнопка "Добавить" служит для добавления элемента в стек.');

Memo1.Lines.Add(' Добавьте 1, 3, 5 элементами число 22;');

Memo1.Lines.Add(' Кнопка "Удалить" служит для удаления элемента из стека.');

Memo1.Lines.Add(' Удалите 1, 3, 5, последний элементы;');

Memo1.Lines.Add('3. На листе формата А4, опишите ход проделанной работы.');

Memo1.Lines.Add(' Ответьте на поставленные вопросы:');

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

Memo1.Lines.Add(' 2) Приведи примеры стека на практике?');

end;

procedure TForm1.N61Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add(' Лабораторная работа №6.');

Memo1.Lines.Add(' "Дек"');

Memo1.Lines.Add('______________________________________________________________');

Memo1.Lines.Add('1. Нажмите кнопку "Теория" для дека.');

Memo1.Lines.Add(' Внимательно изучите теоретический материал.');

Memo1.Lines.Add('');

Memo1.Lines.Add('2. Нажмите кнопку "Обновить" для формирования списков.');

Memo1.Lines.Add(' Кнопки "<< и >>" служат для перемещения курсора в деке.');

Memo1.Lines.Add(' а) Переместитесь влево на 2 элемента;');

Memo1.Lines.Add(' б Переместитесь вправо на 4 элемента;');

Memo1.Lines.Add(' Кнопка "Добавить" служит для добавления элемента в дек.');

Memo1.Lines.Add(' а) Добавьте 1, 3 элементом число 11;');

Memo1.Lines.Add(' б) Добавьте 5, 6 элементом число 88;');

Memo1.Lines.Add(' Кнопка "Удалить" служит для удаления элемента из дека.');

Memo1.Lines.Add(' а) Удалите 2, 4 элементы;');

Memo1.Lines.Add(' б) Добавте 6, 7 элементы;');

Memo1.Lines.Add('');