STOS dodawanie i usuwanie elementów

kede
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 25 cze 2009, o 12:44
Płeć: Mężczyzna

STOS dodawanie i usuwanie elementów

Post autor: kede »

Witam
Mam napisać odpowiednie deklaracje typów i algorytm dodawania i usuwania elementu do kolejki LIFO w postaci tablicowej. Ma to być tzw. pseudokod. Nie musi się to kompilować.
Napisałem ten kod, ale nie wiem czy dobrze. Jakby ktoś mógł sprawdzić ewentualnie coś poprawić byłbym bardzo wdzięczny. Mam jeszcze do napisania FIFO ale to wrzucę później.

Kod: Zaznacz cały

type
stos=record
T:Array[1..N]of char;
w:integer;
end.

Procedure dodaj(var s:stos, x:char);
begin
with S do
begin
if w=N then blad
Tw:=w+1;
T[w]:=x;
end.

Function usun(var s:stos):char
var x:char;
begin
with S do
begin
if W=0 then blad
x:=T[w];
w:=w-1;
end.

Var S:stos

begin

dodaj(s,'x');

usun(s)

end.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

STOS dodawanie i usuwanie elementów

Post autor: kadiii »

Wygląda w miarę dobrze jak na pseudokod(pascala). Powiedzmy jako małą zmianę zamiast komunikatu 'blad' przy pustym stosie zwyczajowo pisze się 'Stos pusty' a przy dodawaniu do pełnego 'Stos pełny', ale to tylko taka uwaga na marginesie. Tak ideowo to jest ok. FIFO zrób podobnie, z tą różnicą, że przy zdejmowaniu usuwasz pierwszy element i przesuwasz zawartość tablicy o 1.
kede
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 25 cze 2009, o 12:44
Płeć: Mężczyzna

STOS dodawanie i usuwanie elementów

Post autor: kede »

FIFO

jakbyś mógł to sprawdzić to byłbym wdzięczny...

Kod: Zaznacz cały

type PKolejka = ^TKolejka;
  TKolejka = record
    Liczba: Byte;
    Nastepny: PKolejka;
  end;

procedure DodajK(var Pocz: PKolejka; Liczba: Byte);
  var
    Nowy, Pom: PKolejka;
  begin
    Pom := Pocz;
    while Pom^.Nastepny <> nil do
      Pom := Pom^.Nastepny;
    New(Nowy);
    Nowy^.Liczba := Liczba;
    Nowy^.Nastepny := nil;
    Pom^.Nastepny := Nowy;
  end;

procedure Usun(var Pocz: PKolejka);
  var
    Pom: PKolejka;
  begin
    while Pocz <> nil do
    begin
      Pom := Pocz^.Nastepny;
      Dispose(Pocz);
      Pocz := Pom;
    end;
  end;
ODPOWIEDZ