Next Previous Contents

5. FAQ - yleisimmät kysymykset

K: Kuinka otan kirjaston käyttöön omassa ohjelmassani?

V: Ohjelmakoodiin on kirjoitettava rivi: import TRA; sekä ohjelma käännetään komennolla: trap ohjelma.p

K: Kuinka luon uuden tietorakenteen?

V: Ensin tietorakenne pitää esitellä ja sitten se pitää alustaa. Koodilohkon lopussa tulee tila vapauttaa.

Esim. listan luominen
program malli;
var lista : LIST; (*listan esittely*)
begin
   LIST_CREATE(lista); (*listan alustaminen*)
   ...
   LIST_FREE(lista); (*tilan vapauttaminen*)
end.                                

K: Kuinka luon aputietorakenteita jotka ovat samaa tyyppiä kuin parametrina saamani pino?

V: Käytät tietorakenteen tyypin palauttavaa funktiota TYPE().

Esim. luo jonon joka on samaa tyyppiä kuin pino
procedure malli(pino : STACK);
var jono : QUEUE;
begin
QUEUE_CREATE(jono, STACK_TYPE(pino)); (*jono on nyt samaa tyyppiä kuin pino*)
end;

K: Kuinka saan tietorakenteeseen lisättyä satunnaisia lukuja?

V: Käytät satunnaisia kokonaislukuja lisäävää funktiota CONSTRUCT_RANDOM().

Esim. lisätään listaan malli 10 satunnaista kokonaislukua välillä 1-20 LIST_CONSTRUCT_RANDOM(malli, 10, 1, 20);

K: Kuinka toteutan tietorakenteen, jonka jokainen alkio on tietorakenne?

V: Käyttämällä osoitintyyppistä rakennetta VOIDPTR().

Esim. pino jonka alkiot on listoja
program LIST_IN_STACK;
var          S:STACK;
L1,L2,L3,L4,L5:LIST;
             i:integer;
begin
        INT_LIST_CREATE(L1);
        INT_LIST_CREATE(L2);
        INT_LIST_CREATE(L3);
        INT_LIST_CREATE(L4);
        VOIDPTR_STACK_CREATE(S);
        LIST_CONSTRUCT_RANDOM(L1, 3, 1, 10);
        LIST_CONSTRUCT_RANDOM(L4, 1, 1, 10);
        VOIDPTR_STACK_PUSH(S, L1);
        VOIDPTR_STACK_PUSH(S, L2);
        VOIDPTR_STACK_PUSH(S, L3);     
        VOIDPTR_STACK_PUSH(S, L4);
        while (not STACK_EMPTY(S)) do begin
                writeln('L:');
                LIST_PRINT(PS_TOP(S));
                VOIDPTR_STACK_POP(S);
                writeln;
        end;
end.

Next Previous Contents