Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рекурсивное создание стека




unit Unitstack;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Output_stack: TButton;

Button3: TButton;

ListBox1: TListBox;

ListBox2: TListBox;

Create_data: TButton;

Create_Less_stack: TButton;

Label1: TLabel;

Edit1: TEdit;

ListBox3: TListBox;

Del_element: TButton;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

 

procedure Create_dataClick(Sender: TObject);

procedure Output_stackClick(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Create_Less_stackClick(Sender: TObject);

procedure Del_elementClick(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

 

private

{ Private declarations }

public

{ Public declarations }

end;

Pst=^stack;

stack=record

date:integer;

next:Pst;

end;

ff=file of integer;

var

Form1: TForm1;

Tops,ps:Pst;

f:ff;

n,v:integer;

implementation

 

{$R *.dfm}

function Cr_st(k:integer):Pst;

var x:integer;

pt:pst;

begin

if k=0 then

pt:=nil

else

begin

read(f,x);

new(pt);

pt^.date:=x;

pt^.next:=Cr_st(k-1);

end;

Cr_st:=pt;

end;

procedure TForm1.Create_Less_stackClick(Sender: TObject);

var k:integer;

begin

reset(f);

k:=Filesize(f);

if v>k then

begin

Label5.Caption:='Число больше длины стека';

exit;

end;

tops:=Cr_st(v);

closefile(f);

ListBox3.clear;

ps:=tops;

while ps<>nil do

begin

ListBox3.Items.add(inttostr(ps^.date));

ps:=ps^.next;

end;

 

end;

 

procedure TForm1.Output_stackClick(Sender: TObject);

begin

reset(f);

tops:=Cr_st(n);

closefile(f);

ListBox2.clear;

ps:=tops;

while ps<>nil do

begin

ListBox2.Items.add(inttostr(ps^.date));

ps:=ps^.next;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Create_dataClick(Sender: TObject);

Var i,x:integer;

begin

assignfile(f,'stack_f.dat');

rewrite(f);

Randomize;

n:=random(20)+2;

ListBox1.Clear;

For i:=1 to n do

begin

ListBox1.Items.add(inttostr(Random(20)+1));

x:= strtoint(ListBox1.Items[i-1]);

write(f,x);

end;

closefile(f);

end;

 

 

procedure TForm1.Del_elementClick(Sender: TObject);

var

pp:pst;

begin

reset(f);

pp:=nil;

ps:=tops;

While (ps=tops)and (ps^.date = v)do

begin

ps:=ps^.next;

dispose(tops);

tops:=ps;

end;

while (ps<>nil) and (ps^.date <> v)do

begin

pp:=ps;

ps:=ps^.next;

end;

if ps<> nil then

begin

pp^.next:=ps^.next;

dispose(ps);

end else

pp^.next:=nil;

ListBox3.Clear;

ps:=tops;

while ps<>nil do

begin

ListBox3.Items.add(inttostr(ps^.date));

ps:=ps^.next;

end;

end;

 

procedure TForm1.Edit1Change(Sender: TObject);

begin

v:=Strtoint(Edit1.Text);

Create_Less_stack.Enabled:=true;

 

end;

 

procedure TForm1.Edit2Change(Sender: TObject);

begin

v:=Strtoint(Edit2.Text);

Del_element.Enabled:=true;

end;

 

end.

 

 

Рис. 3




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 260; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.