Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  jdks
Language: PASCAL
Code:
const
     MEMSize = 1000;
     
type
     element = record          //Element u memoriji
          data:string[10];     //Podatak koji element nosi
          next:integer;          //Potencijalni sledeci element u nizu
          used:boolean;          //Da li je trenutni element rezervisan
     end;
     
var
     MEM:array[1..MEMSize]of element;     //Ovde se cuvaju elementi
     memOcupied:integer;                         //Ovde se cuva broj aktivnih elemenata u nizu
     start:integer;
     

procedure clearMEM;
var
     i:integer;
begin
     MEMOcupied:=0;
     for i:=1 to MEMSize do
     begin
          MEM[i].dat:='';
          MEM[i].next:=0;
          MEM[i].used:=false;
     end;
end;

function newMEM:integer;                    //Vraca lokaciju u MEM nove lokacije
var
     i:integer;
begin
     //KORISTI OVO NA POCETKU, ALI NIJE LOSE DA NAPISES SVOJE FUNKCIJE
     if MEMOcupied>=MEMSize then newMEM:=0
     else
     begin
          i:=0;
          repeat
               inc(i);
          until not MEM[i].used;
          MEM[i].used:=true;          //Kada pises svoju tvoja je duznost da ga obelezis kao zauzetog
          inc(MEMOcupied)
          newMEM:=i;
     end;
end;

function deleteMEM(i:integer):boolean;     //Vraca uspesnost brisanja memorije na lokaciji i u MEM
begin
     //KORISTI OVO NA POCETKU, ALI NIJE LOSE DA NAPISES SVOJE FUNKCIJE
     If not MEM[i].used then
          deleteMEM:=false
     else
     begin
          MEM[i].used=false;
          //Ostavljam junk unutra, tako radi i prava memorija
          deleteMEM:=true;
     end;
     
end;

function insert(var start:integer; value:string):integer; //Dodaje element na pocetak liste i vraca adresu
begin
    adress := newMEM;
    MEM[adress].value := value;
    MEM[adress].next := start;
    start := adress;
    insert := adress;
end;

function last(prev:integer):integer;
var
    i:integer;
begin
    if prev = 0 then last := 0;
    i := MEM[prev].next;
    while i <> 0 do
    begin
        prev := i;
        i := MEM[prev].next;
    end;
    last := prev;
end;

procedure print(start:integer);
begin
    write('list: ');
    while start<>0 do
    begin
        write(MEM[start].value);
        start := MEM[start].next;
        if start <> 0 then write(' > ');
    end;
    writeln;
end;


Begin
    clearMEM;
     start:=0;

    print(start);
    writeln(last(start));

    insert(start, '1');
    print(start);
    writeln(last(start));

    insert(start, '2');
    print(start);
    writeln(last(start));

    insert(start, '3');
    print(start);
    writeln(last(start));
    writeln(MEM[last(start)].value);
    
    readln;
     
     //Napisi listu koristeci niz MEM koji predstavlja memoriju i funkcije newMEM i deleteMEM koji
     //vracaju slobodnu poziciju u nizu MEM tj brisu element na poziciji u nizu MEM
     //Nakon implementacije, mozes sam napisati svoje funkcije newMEM i deleteMEM
     
     //Npr, ucitavaj recenicu sa ulaza, podeli je na reci i te reci ubaci u listu.
     //Zatim iz liste istampaj recenicu, a zatim daj korisniku opciju da izbrise neku rec, ukucavanjem te reci
     //Nakon brisanja istampaj novu recenicu

     //Lista je sastavljena od jedne promenljive(start) koja sadrzi adresu(lokaciju, pokazivac) na prvi element liste
     //Elementi liste su komadi memorije koji sadrze podatak i jos jednu promenljivu koja "pokazuje" na sledeci element liste
     //Broj 0 se koristi kao pokazivac koji ni na sta ne pokazuje i cesto sluzi za identifikaciju kraja liste
     
End.
Comments: