Смекни!
smekni.com

Динамические структуры данных. Решение задач. Стек. Очередь. Дек (стр. 3 из 4)

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

else push);

while not emptydo

push);

push);

writeln;

list;

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

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

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);

while not emptydo

push);

push);

push);

while not emptydo

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

else push);

push);

while not emptydo

push);

writeln;

list;

Дек:

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

2. Дек состоит из целых чисел. Вставить в этот дек ноль после числа вводимого с клавиатуры.

3. Заполнить дек целыми положительными числами. Вставить в дек сегодняшнее число до элемента, который равен числу вводимому с клавиатуры.

4. Заполнить дек случайным образом целыми числами. Найти максимальный элемент в образовавшемся деке и вставить до и после него ноль.

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

6. В деке, состоящем из целых чисел, вставить перед предыдущим элементом, равным введенному числу с клавиатуры, число равное произведению элемента и предыдущего элемента.

7. Дек заполнен случайными целыми числами. Сортировать данный дек по возрастанию.

8. Заполнить дек случайными целыми числами и отсортировать его по убыванию.

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

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

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

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

13. Удалить четные элементы дека, заполненного случайным образом целыми числами.

14. Удалить нечетные элементы в деке, который заполнен целыми числами.

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

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

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

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

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

20. Дан дек из целых чисел, заданных случайным образом. Оставить в деке только двухзначные числа, все остальные удалить.

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

22. Дек заполнен целыми положительными и отрицательными числами. Удалить из дека все положительные четные числа.

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

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

25. Дан дек из целых чисел, заданных случайным образом. Если дек содержит четное количество элементов, то добавить в середину дека максимальный элемент; если же дек содержит нечетное количество элементов, то удалить из него средний.

26. Дан дек из целых чисел, заданных случайным образом. Если дек содержит четное количество элементов, то добавить в середину дека минимальный элемент; если же дек содержит нечетное количество элементов, то удалить из него средний.

Очередь:

1. Дана очередь из целых чисел. Удалить из нее все отрицательные элементы.

2. Сравнить модули сумм положительных и отрицательных элементов очереди. Очередь заполнена целыми числами.