Разделы презентаций


Структуры данных Стеки

Стек (stack)Практическое занятиеProgram Stack-P;type Pt=^k; k=record d: char; p: pt end;var ph: Pt; c: char; n: integer;beginn:=1;writeln ('Введите первый элемент ', n:3);readln (c);FormSt (ph, c); repeat n:=n+1; writeln

Слайды и текст этой презентации

Слайд 1 Структуры данных
Стек (stack)
Стеки – последовательный список переменной длины, включение

и исключение элементов из которого выполняются только с одной стороны

списка, называемого вершиной стека. Применяются и другие названия стека - магазин и очередь, функционирующая по принципу LIFO: Last – In, First- Out - "последним пришел - первым исключается (выбирается)".

Пример: принцип включения элементов в стек и исключения элементов из стека.
На рисунке изображены состояния стека:
а) пустого;
б-г) после последовательного включения в него элементов с именами 'A', 'B', 'C';
д, е) после последовательного удаления из стека элементов 'C' и 'B';
ж) после включения в стек элемента 'D'.


Основные операции над стеком:
- включение нового элемента (английское название push - заталкивать)
- исключение элемента из стека (англ. pop - выскакивать).
Полезными могут быть также вспомогательные операции:
определение текущего числа элементов в стеке;
очистка стека;
неразрушающее чтение элемента из вершины стека, которое может быть реализовано, как комбинация основных операций: x:=pop(stack); push(stack,x).

И+ПРГ

Структуры данныхСтек (stack)Стеки – последовательный список переменной длины, включение и исключение элементов из которого выполняются только

Слайд 2Стек (stack)

Практическое занятие
Program Stack-P;
type Pt=^k; k=record d: char; p: pt

end;
var ph: Pt; c: char; n: integer;

begin
n:=1;
writeln ('Введите первый

элемент ', n:3);
readln (c);
FormSt (ph, c);
repeat
n:=n+1;
writeln (' Введите ', n:3,'-й элемент');
readln (c);
if c<>'.'
then AddSt (ph, c) else break;
AddSt (ph, c);
until c='.';
n:=1;
repeat
DelSt (ph, c);
writeln (n:3,'-й компонент = ', c);
n:=n+1;
until ph=nil;
end.

Сформировать стек, добавить в него N элементов, а затем считать элементы и вывести их на экран. Элементы должны быть символьного типа. Ввод элементов с клавиатуры, признак конца ввода – точка.

type Pt=^k; k=record d: char; p: pt end;
var ph: Pt; c: char;
Procedure FormSt (var ph: Pt; var c: char);
(*Формирование первого элемента стека *)
begin
New (ph); (* создать динамический стек *)
ph^.p := nil; (* указатель конца стека *)
ph^.d := c; (* значение первого элемента *)
end;
Procedure AddSt (var ph: Pt; var c: char);
(* Занесение следующего элемента в стек *)
var px: Pt; (*вспомогательный указатель*)
begin
New(px); (*создание вспомогательного указателя*)
px^.p := ph; (* присвоение вспомогательному указателю адреса очередного элемента стека *)
ph := px; (* сдвиг указателя на вершину стека *)
ph^.d := c; (*занесение элемента в вершину стека*)
end;
Procedure DelSt (var ph: Pt; var c: char);
(* Выборка следующего элемента из стека *)
var px: Pt; (*вспомогательный указатель*)
begin
px := ph; (*сохранение адреса вершины во вспомогательном указателе *)
с := ph^.d; (* чтение значения из вершины *)
ph := ph^.p; (* смещение адреса вершины *)
Dispose (px); (*освобожд. вспомогат. указателя*)
end;

Через указатели и элементы списка

И+ПРГ

Стек (stack)Практическое занятиеProgram Stack-P;type Pt=^k; k=record d: char; p: pt  end;var ph: Pt; c: char; n:

Слайд 3 Структуры данных
C / С++
Pascal
Стек (stack)

Практическое занятие
int stack [MAX];
int

tos=0; // вершина стека

void push (int i)
/* Занесение элемента в

стек */
{
if (tos >= MAX)
{
printf (" Стек полон \n");
return 0;
}
stack[tos] = i; // заносим элемент в стек
tos++;
return 0;
}

int pop (void)
/* Выборка элемента из стека */
tos--;
if (tos < 0)
{
printf (" Стек пуст \n");
return 0;
}
return stack [tos];
}

Через массив

const
MAX=100;

var
stack: array [1..MAX] of char;
tos: integer; {Вершина стека }

procedure push (i: char); {Занесение элемента в стек}
begin
if (tos >= MAX) then
writeLn('Стек полон');
stack[tos] := i; {вставляем элемент в стек}
inc(tos);
end;

function pop : char; {Выборка элемента из стека }
begin
dec(tos);
if (tos <= 0) then
writeLn('Стек пуст');
pop:=stack[tos];
end;

И+ПРГ


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

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика