скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКурсовая работа: Динамические структуры данных. Решение задач. Стек. Очередь. Дек

var p:connect;

Begin

if andthen begin

remove:=s^.elem;

s^.next^.pred:=s1^.pred^.pred;

s^.pred^.next:=s^.next^.next;

end

Else begin

if s=sn1 then begin

p:=s;

remove:=s^.elem;

s^.next^.pred:=nil;

sn1:=s^.next;

dispose;

end;

if s=sn2 then begin

p:=s;

remove:=s^.elem;

s^.pred^.next:=nil;

sn2:=s^.pred;

dispose;

end;

End;

End; {remove}

Если звено первое, то значению функции присваиваем значение первого элемента; если – второе, то – последнего элемента.


Заключение:

Использование динамических структур данных эффективно применять при решении задач, так как каждому значению переменной выделяется какая-то область памяти, в ходе чего происходит учет ресурсов компьютера. При необходимости эту ячейку можно ликвидировать, если информация находящаяся в этой ячейке нам больше не понадобится.

Конечно, при решении задач с помощью статистических переменных обработка и доступ к информации облегчается. При использовании статистических структур данных происходит нерациональное использование оперативной памяти, потому что для статистических переменных выделяется фиксированный размер памяти.

Стековых структур данных, очередей и деков в среде «ТУРБО ПАСКАЛЬ» как тип переменных не существует, поэтому, для наглядности, используют массивы и линейные списки.

Стек как структура данных используется при решении рекурсивных задач, когда необходимо сначала решить последнюю проблему, а уже за ним предыдущие проблемы. Рекурсивные процедуры обращаются сами к себе, при этом изменяются значения переменных, предшествующие значения которых складываются в стек. При выполнении начальной заданной условий, находится решение для простейшей функции, затем более сложной.


Приложение

Стек:

1.  Дан стек заполненный случайным образом, из целых чисел. Удалить из него все отрицательные элементы, используя второй стек и одну переменную.

randomize;

init;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

for i:=1 to n do

begin

push);

pop;

end;

for i:=1 to n do

begin

if stacktop>=0 then

push);

pop;

end;

writeln;

list;

2.  Дан стек заполненный целыми числами случайным образом. Удалить из стека все числа не кратные заданному с клавиатуры.

randomize;

init;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

for i:=1 to n do

begin

push);

pop;

end;

writeln;

readln;

for i:=1 to n do

begin

if) mod f=0 then

push);

pop;

end;

writeln;

list;

3.  Дан стек, содержащий целые числа. Используя второй стек, записать в дно стека номер один сумму всех элементов.

randomize;

init;

init;

for i:=1 to n-1 do

begin

y:=random-random;

push;

end;

list; Writeln;

f:=0;

for i:=1 to n-1 do

begin

f:=f+stacktop;

push);

pop;

end;

push;

for i:=1 to n-1 do

begin

push);

pop;

end;

list;

writeln;

4.  Удалить из стека, который составлен из целых чисел заданных случайным образом, каждый второй элемент. На дне находится первый элемент.

randomize;

init;

init;

for i:=1 to n do begin

y:=random;

push; end;

list; writeln;

while not emptydo begin

pop;

push);

end;

while not emptydo begin

push); end;

list; writeln;

5.  Дан стек из целых чисел, заполненный случайным образом. При помощи второго стека удалить последний отрицательный элемент.

randomize;

init;

init;

for i:=1 to n do begin

y:=random-random;

push; end;

list;

y:=0;

while not empty do begin

if <0) and then begin pop; y:=1; end;

push);

end;

list;

while not empty do

push);

list;

6.  Дан стек заполненный элементами типа typeelem. Удалить из стека предпоследний элемент.

randomize;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

y:=pop;

pop;

push;

list; Writeln;

7.  Дан стек заполненный элементами типа typeelem. Удалить из стека первый элемент и поместить его в вершину стека номер один.

randomize;

init;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

repeat

y:=pop;

push;

until empty;

f:=pop;

repeat

y:=pop;

push;

until empty;

push;

list; Writeln;

8.  Дан стек из целых чисел, заполненный случайным образом. Поместить вершину стека в дно, используя вспомогательный стек.

randomize;

init;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

f:=pop;

repeat

y:=pop;

push;

until empty;

push;

repeat

y:=pop;

push;

until empty;

list; Writeln;

9.  Дан стек заполненный случайным образом из целых чисел. Поменять в данном стеке содержимое вершины и дна.

randomize;

init;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

f1:=pop;

repeat

y:=pop;

push;

until empty;

f2:=pop;

push;

repeat

y:=pop;

push;

until empty;

push;

list; Writeln;

10.  Дан стек из целых чисел, заполненный случайными образом. Сравнить сумму положительных элементов с модулем суммы отрицательных элементов.

randomize;

init;

init;

w:=1; w1:=1;

for i:=1 to n do begin

y:=random-random;

push; end;

list;

f:=true;

while not empty do begin

y:=pop;

if y>0 then w:=w*y

else w1:=w1*abs;

push;

end;

if w<w1 then writeln

else writeln;

while not empty do begin

y:=pop;

push; end;

list;

11.  Дан стек из целых чисел. Поместить в дно стека сумму модулей всех элементов.

randomize;

init;

init;

for i:=1 to n-1 do

begin

y:=random-random;

push;

end;

list; Writeln;

f:=0;

for i:=1 to n-1 do

begin

f:=f+abs);

push);

pop;

end;

push;

for i:=1 to n-1 do

begin

push);

pop;

end;

list;

writeln;

12.  Дан стек из целых чисел. Поместить в дно стека произведение всех элементов.

randomize;

init;

init;

for i:=1 to n-1 do

begin

y:=random-random;

push;

end;

list; Writeln;

f:=1;

for i:=1 to n-1 do

begin

f:=f*abs);

push);

pop;

end;

push;

for i:=1 to n-1 do

begin

push);

pop;

end;

list;

writeln;

13.  Дан стек, заполненный случайными числами. Вычесть из всех элементов стека число вводимое с клавиатуры. Используйте второй стек для хранения данных.

randomize;

init;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

Writeln;

readln;

for i:=1 to n do

begin

y:=stacktop-f;

push;

pop;

end;

push;

for i:=1 to n do

begin

push);

pop;

end;

list;

14.  Дан стек из целых чисел. Прибавить ко всем элементам число вводимое с клавиатуры.

15.  В стек записаны элементы типа typeelem. Записать содержимое стека в обратном порядке в тот же стек. Используйте два вспомогательных стека.

randomize;

init;

init;

init;

for i:=1 to n do

begin

y:=random-random;

push;

end;

list; Writeln;

for i:=1 to n do

begin

push);

pop;

end;

for i:=1 to n do

begin

push);

pop;

end;

for i:=1 to n do

begin

push);

pop;

end;

list;

16.  В стек записаны элементы типа typeelem. Поменять в стеке первый элемент со вторым, третий с четвертым, и так далее. Если стек содержит нечетное количество элементов, то оставить его на месте.

init;

init;

init;

for i:=1 to n do

push;

list; Writeln;

while not emptydo begin

push);

push);

end;

while not or empty) do begin

push);

push);

end;

list;

17.  Стек заполнен элементами типа typeelem. Записать в этот же стек сначала элементы с четными номерами, затем – с нечетными.

init;

init;

init;

for i:=1 to n do

push;

list; Writeln;

while not emptydo begin

push);

push);

end;

while not or empty) do

push);

while not or empty) do

push);

list;

18.  Стек заполнен целыми числами случайным образом. Записать в стек сначала четные элементы, затем – нечетные. Для решения задачи используйте два дополнительных стека.

randomize;

init;

init;

init;

for i:=1 to n do

begin

y:=random;

push;

end;

list; Writeln;

while not emptydo

if stacktop mod 2=0 then push)

else push);

while not emptydo

push);

while not emptydo

push);

list;

19.  Дан стек из целых чисел, заполненный случайным образом. Используя только стеки, отсортировать элементы стека по возрастанию. На дне стека минимальный элемент, в вершине – максимальный. Используйте нужное количество стеков.

randomize;

init;

init;

init;

init;

for i:=1 to n do

begin

y:=random;

push;

end;

list; Writeln;

while not emptydo begin

push);

while not emptydo begin

if stacktop>=stacktop then

begin push); push); end

else push); end;

push);

while not emptydo

push);

end;

while not emptydo

push);

list; Writeln;

20.  Отсортировать стек, заполненный целыми числами, по убыванию. На дне стека должен быть максимальный элемент, в вершине – минимальный. Использовать только нужное количество стеков.

21.  Дан стек, заполненный случайными целыми числами. Удалить из стека повторяющиеся элементы, оставив по одному.

randomize;

init;

init;

init;

init;

for i:=1 to n do

begin

y:=random;

push;

end;

list; Writeln;

while not emptydo begin

push);

while not emptydo

if stacktop=stacktop then pop

else push);

while not emptydo

push);

end;

while not emptydo

push);

list; Writeln;

22. Удалить из стека, который состоит из целых чисел, все числа, которые не повторяются.

23.  Стек заполнен однозначными и двухзначными числами. Поместить однозначные числа в один стек, двухзначные – в другой.

randomize;

init;

init;

init;

for i:=1 to n do

begin

y:=random;

push;

end;

list; Writeln;

while not emptydo

if stacktopdiv 10=0 then push)

else push);

list; Writeln;

list; Writeln;

24.  Дан стек, заполненный случайным образом целыми числами. Поместить четные элементы в один стек, нечетные – во второй.

25.  Создать стек из целых чисел, в котором каждый элемент равен сумме предшествующих элементов. Первый элемент равен одному.

randomize;

init;

push;

y:=0;

for i:=2 to n do begin

y:=y+stacktop;

push; end;

list;

26.  Дан стек из целых чисел. Найти минимальный элемент стека и записать его в дно стека.

randomize;

init;

init;

init;

for i:=1 to n-1 do

begin

y:=random-random;

push;

end;

list; Writeln;

push);

while not emptydo

if stacktop<=stacktop then begin push); push) end

else push);

push);

while not emptydo

push);

writeln;

list;

27.  Найти в стеке, составленном из целых чисел, максимальный элемент и поместить его в дно стека.

28.  В стеке, составленном из целых чисел, найти минимальный элемент и поместить его в вершину стека.

randomize;

init;

init;

init;

for i:=1 to n-1 do

begin

y:=random-random;

push;

end;

list; Writeln;

push);

while not emptydo

if stacktop<=stacktop then begin push); push) end

Страницы: 1, 2, 3


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.