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

Меню

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

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

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

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.  Сравнить модули сумм положительных и отрицательных элементов очереди. Очередь заполнена целыми числами.

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

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

5.  Вычесть из всех элементов очереди число вводимое с клавиатуры.

6.  Прибавить ко всем элементам число вводимое с клавиатуры. Очередь заполнена целыми числами.

7.  Записать очередь в обратном порядке. Очередь заполняется с клавиатуры.

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

9.  Элемент из начала очереди поменять с последним элементом.

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

11.  В начало очереди поместить элементы с четными номерами, а вконец – с нечетными.

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

Основные процедуры:

Стек:

{Реализация стека на основе массива}

Program st;

Uses Crt;

Const n=10;

Type typeelem=Integer;

stack=Array Of typeelem;

Var s:stack; y:typeelem; i: Integer;

Procedure init;     {создание стека}

Var i: Integer;

Begin

For i:=1 To n Do s:=-1000

End; {init}

Procedure list;     {распечатка содержимого стека}

Var i: Integer;

Begin

Writeln;

i:=1;

While And Do Begin Writeln; Inc End

End; {list}

Procedure push; {занесение элемента в стек}

Var i: Integer;

Begin

For i:=n Downto 2 Do s:=s;

s:=x

End; {push}

Function pop:typeelem;         {удаление элемента из стека}

Var i: Integer;

Begin

pop:=s;

For i:=1 To n-1 Do s:=s;

s:=-1000

End; {pop}

Function stacktop:typeelem;  {считывание верхнего элемента без удаления}

Begin

stacktop:=s

End; {stacktop}

Function empty: Boolean;               {проверка стека на пустоту}

Begin

empty:=false;

End; {empty}

{–}

Begin {main}

Clrscr;

init;

list; Writeln;

For i:=1 To 3 Do push;

Writeln; list;

Writeln);

y:=stacktop; Writeln; Writeln;

Writeln; list; Writeln;

For i:=1 To 2 Do Begin y:=pop; Writeln End;

Writeln; list; Writeln;

y:=pop; Writeln;

Writeln; list;

Writeln);

Readln

End. {main}

Очередь:

{pеализация очереди на основе лин списка}

Program spisok;

Uses Crt;

Type typeelem=Integer;

connect=^data;

data=Record

elem:typeelem;

next:connect

End;

Var sn, s, sk:connect; x:typeelem; i: Integer;

Procedure init;

{создание очереди}

var p:connect;

Begin

new;

p^.next:=nil;

sn:=p; sk:=p;

End; {init}

Procedure list;

{распечатка содержимого очереди}

var s:connect;

begin

s:=sn^.next;

while s<>nil do begin

write;

s:=s^.next; end;

End; {list}

Function empty: Boolean;

{проверка очереди на пустоту}

Begin

empty:=sn=sk;

End; {empty}

Procedure insert;

{занесение элемента x в очередь}

var p:connect;

Begin

new;

p^.next:=nil;

p^.elem:=x;

sk^.next:=p;

sk:=p;

End; {insert}

Function remove:typeelem;

{удаление элемента из очереди}

Begin

remove:=sn^.next^.elem;

sn:=sn^.next;

End; {remove}

{–}

Begin

ClrScr;

randomize;

init; {инициализация очереди}

for i:=1 to 5 do begin

x:=random-random;

insert; {вставка элемента в очередь}

end;

list; writeln; {распечатка содержимого очереди}

x:=remove; {удаление элемента из очереди}

list; writeln; {распечатка содержимого очереди}

Readln; End.

Дек:

{pеализация дека на основе линейного списка}

Program dek;

Uses Crt;

Type typeelem=Integer;

connect=^data;

data=Record

elem:typeelem;

next:connect;

pred:connect

End;

Var sn1, sn2, s:connect; x, y:typeelem; i: Integer;

k:string;

Procedure init;

{создание дека}

var p:connect;

Begin

new;

p^.next:=nil;

p^.pred:=nil;

p^.elem:=x;

sn1:=p;

sn2:=p;

End; {init}

Procedure listnext;

{распечатка содержимого дека в прямом порядке}

var s:connect;

begin

s:=sn1;

while s<>nil do begin

write;

s:=s^.next; end;

write;

End; {list}

Procedure listpred;

{распечатка содержимого дека в обратном порядке}

var s:connect;

begin

s:=sn2;

while s<>nil do begin

write;

s:=s^.pred; end;

write;

End; {list}

Function empty: Boolean;

{проверка дека на пустоту}

Begin

empty:=sn1=sn2;

End; {empty}

Procedure insert1;

{занесение элемента x в дек после заданного звена}

var s1, s2, p:connect;

Begin

s1:=sn1;

s2:=sn2;

while s1^.elem<>y do s1:=s1^.next;

while s2^.pred^.elem<>y do s2:=s2^.pred;

new;

p^.elem:=x;

p^.next:=s2;

p^.pred:=s1;

s2^.pred:=p;

s1^.next:=p;

end;

Procedure insert3;

{занесение элемента x в дек до заданного звена}

var s1, s2, p:connect;

Begin

s1:=sn1;

s2:=sn2;

while s1^.next^.elem<>y do s1:=s1^.next;

while s2^.elem<>y do s2:=s2^.pred;

new;

p^.elem:=x;

p^.next:=s2;

p^.pred:=s1;

s2^.pred:=p;

s1^.next:=p;

end;

Procedure insert2;

{занесение элемента x в дек}

var p:connect;

Begin

if k='к' then begin

new;

p^.next:=nil;

p^.elem:=x;

p^.pred:=sn2;

sn2^.next:=p;

sn2:=p;

end;

if k='н' then begin

new;

p^.pred:=nil;

p^.elem:=x;

p^.next:=sn1;

sn1^.pred:=p;

sn1:=p;

end;

End; {insert}

Procedure insertnext;

{занесение элемента x в дек после заданного звена}

var s1, s2, p:connect;

Begin

s1:=sn1;

s2:=sn2;

if then insert1

else insert2

end;

Procedure insertpred;

{занесение элемента x в дек до заданного звена}

var s1, s2, p:connect;

Begin

s1:=sn1;

s2:=sn2;

if then insert3

else insert2

end;

Function remove1:typeelem;

{удаление элемента из начала}

Begin

remove1:=sn1^.elem;

sn1^.next^.pred:=nil;

sn1:=sn1^.next;

End; {remove}

Function remove2:typeelem;

{удаление элемента из конца}

Begin

remove2:=sn2^.elem;

sn2^.pred^.next:=nil;

sn2:=sn2^.pred;

End; {remove}

Function remove:typeelem;

{удаление элемента из дека}

var s1, s2, s, p:connect;

Begin

s1:=sn1; s2:=sn2;

if andthen begin

while s1^.next^.elem<>y do s1:=s1^.next;

while s2^.pred^.elem<>y do s2:=s2^.pred;

remove:=s1^.next^.elem;

s1^.next:=s1^.next^.next;

s2^.pred:=s2^.pred^.pred;

end

else if then remove:=remove2

else remove:=remove1;

End; {remove}

{–}

Begin

ClrScr;

sn1:=nil;

sn2:=nil;

k:='к';

init;

for i:=2 to 10 do

insert2;

listnext;

writeln;

listpred;

writeln;

insertnext;

listnext;

writeln;

insertpred;

listnext;

writeln;

remove1;

listnext;

writeln;

listpred;

writeln;

remove2;

listnext;

writeln;

listpred;

remove;

writeln;

listnext;

writeln;

listpred;

Readln

End.


Литература

стек дек очередь переменная

1.  Информатика и образование, №5 – 1999.

2.  Бабушкина И.А., Бушмелева Н.А., Окулов С.М., Черных С.Ю. Конспекты по информатике. – Киров, 1997.

3.  Грэхем Р., Кнут Д., Паташник О. Конкретная информатика. – М.: Мир, 1988.

4.  Вирт Н., Алгоритм + структура данных = программа.

5.  Райнтли, Абстракция и структура данных.

6.  Зубов В.С., Справочник программиста. – 1999.


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


Новости

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

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

Пока нет

Новости в Twitter и Facebook

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

Новости

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

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.