![]() |
|
|
Реферат: Линейные списки. Стек. Дек. Очередь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; Button14.Enabled := False; Button15.Enabled := False; Button16.Enabled := False; StatusBar1.Panels[1].Text := 'Стек пуст'; end; Image4.Left := Round(StackPos * 7); end; procedure TForm1.Button20Click(Sender: TObject); var i: Integer; s: string; begin StatusBar1.Panels[0].Text := ''; GetDeckBegin(DeckBegin); if DeckBegin <> nil then begin while Edit5.Text[DeckBeginPos] <> ' ' do Inc(DeckBeginPos); Inc(DeckBeginPos); s := Edit5.Text; for i := 1 to DeckBeginPos - 1 do if s[i] <> ' ' then s[i] := ' '; Edit5.Text := s; end; if (DeckBegin = nil) and (DeckBegin = DeckEnd) then begin ShowMessage('Дек пуст'); Edit5.Text := ''; Image5.Hide; Image6.Hide; Button18.Enabled := False; Button19.Enabled := False; Button20.Enabled := False; StatusBar1.Panels[1].Text := 'Дек пуст'; end; Image5.Left := Round(DeckBeginPos * 7); end; procedure TForm1.FormCreate(Sender: TObject); begin Windows.SetFocus(Button21.Handle); end; procedure TForm1.Button19Click(Sender: TObject); var i, a: Integer; s: string; begin StatusBar1.Panels[0].Text := ''; GetDeckEnd(DeckEnd); if DeckEnd <> nil then begin while Edit5.Text[DeckEndPos] <> ' ' do Dec(DeckEndPos); Dec(DeckEndPos); s := Edit5.Text; for i := DeckEndPosition downto DeckEndPos + 1 do if s[i] <> ' ' then s[i] := ' '; Edit5.Text := s; //удаляем все пробелы конце строки s := ''; i := Length(Edit5.Text) - 1; while Edit5.Text[i] = ' ' do Dec(i); for a := 1 to i do s := s + Edit5.Text[a]; Edit5.Text := s; end; if (DeckEnd = nil) and (DeckBegin = DeckEnd) then begin ShowMessage('Дек пуст'); Edit5.Text := ''; Image5.Hide; Image6.Hide; Button19.Enabled := False; Button20.Enabled := False; StatusBar1.Panels[1].Text := 'Дек пуст'; end; Image6.Left := Round(DeckEndPos * 7 - 9); end; procedure TForm1.Button5Click(Sender: TObject); begin Form5.Show; end; procedure TForm1.Button2Click(Sender: TObject); begin DeleteFromList(ListPos); DoNewEditList; end; procedure TForm1.Button6Click(Sender: TObject); begin DeleteFromListTwo(ListTwoPos); DoNewEditListTwo; end; procedure TForm1.Button10Click(Sender: TObject); var i, a: Integer; s1, s2: string; 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;'); |
|
|||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |