algorytm.org

Implementacja w Delphi/Pascal



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Stos - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 5
SłabyŚwietny
Nadesłany przez Michał Knasiecki, 29 lipca 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Stos/Unit1.pas:
//Plik sciagniety ze strony www.algorytm.org
//Program napisal: Michal Knasiecki
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


  //  Nasz stos będzie się skladal z:
  TYPE  wskaznik_stosu=^skladnik_stosu;
        skladnik_stosu=record
        Nazwisko:string;
        wskaznik:wskaznik_stosu;
        end;

var
  Form1: TForm1;
  Licznik:integer=0; //Licznik elementów na stosie
  wskaznik:wskaznik_stosu;
  implementation
  //Zdefiniujemy sobie dwie procedury:

//Poniższa procedura dodaje na stos nazwisko
procedure nastos(element:string;
                var wierzcholek:wskaznik_stosu);
var punkt:wskaznik_stosu;
begin
punkt:=wierzcholek;
New(wierzcholek);
with wierzcholek^ do
        begin
        nazwisko:=element;
        wskaznik:=punkt
        end;
end;
//Poniższa procedura usuwa ze stosu nazwisko
procedure zestosu(var element:String;
                var wierzcholek:wskaznik_stosu);
var punkt:wskaznik_stosu;
begin
if wierzcholek<>nil then
begin
with wierzcholek^ do
        begin
        element:=nazwisko;
        punkt:=wskaznik;
        end;
Dispose(wierzcholek);
wierzcholek:=punkt;
end;
end;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin
//jeżeli stos jest pusty to
if licznik=0 then wskaznik:=nil;
//Dalej zwiększ licznik o 1
inc(licznik);
//i dodaj do niego nazwisko z pola edit1:
nastos(edit1.text,wskaznik);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
naz:string;
begin
//jeżeli stos nie jest pusty
if wskaznik<>nil then
begin
//zmniejsz licznik
dec(licznik);
//zdejmij ze stosu
zestosu(naz,wskaznik);
//i wypisz
edit2.text:=naz;
end
//jesli stos jest pusty pokaz komunikat
else showmessage('Stos jest pusty');
end;

end.
Dodaj komentarz