gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/kodovi/stek-redopsl/RedOpsl.mod b/kodovi/stek-redopsl/RedOpsl.mod
--- /dev/null
@@ -0,0 +1,77 @@
+IMPLEMENTATION MODULE RedOpsl;\r
+FROM Info IMPORT InfoTip;\r
+\r
+PROCEDURE MakeNull(VAR q : RedOpslTip);\r
+BEGIN\r
+ WITH q DO\r
+ Prvi := 0;\r
+ Zadnji := 0\r
+ END\r
+END MakeNull;\r
+\r
+PROCEDURE Empty(VAR q : RedOpslTip) : BOOLEAN;\r
+BEGIN\r
+ RETURN q.Zadnji = 0\r
+END Empty;\r
+\r
+PROCEDURE First(VAR q : RedOpslTip;\r
+ VAR x : InfoTip;\r
+ VAR ok : BOOLEAN);\r
+BEGIN\r
+ IF Empty(q) THEN\r
+ ok := FALSE\r
+ ELSE\r
+ ok := TRUE;\r
+ WITH q DO\r
+ x := Element[Prvi]\r
+ END\r
+ END\r
+END First;\r
+\r
+PROCEDURE AddOne(i : CARDINAL) : CARDINAL;\r
+BEGIN\r
+ IF i = Maxred THEN\r
+ RETURN 1\r
+ ELSE\r
+ RETURN i+1\r
+ END\r
+END AddOne;\r
+\r
+PROCEDURE PopFirst(VAR q : RedOpslTip;\r
+ VAR ok : BOOLEAN);\r
+BEGIN\r
+ IF Empty(q) THEN\r
+ ok := FALSE\r
+ ELSE\r
+ ok := TRUE;\r
+ WITH q DO\r
+ IF Prvi = Zadnji THEN\r
+ MakeNull(q)\r
+ ELSE\r
+ Prvi := AddOne(Prvi)\r
+ END\r
+ END\r
+ END\r
+END PopFirst;\r
+\r
+PROCEDURE AddRear(VAR q : RedOpslTip;\r
+ x : InfoTip;\r
+ VAR ok : BOOLEAN);\r
+BEGIN\r
+ WITH q DO\r
+ IF AddOne(Zadnji) = Prvi THEN\r
+ ok := FALSE\r
+ ELSE\r
+ ok := TRUE;\r
+ IF Empty(q) THEN\r
+ Prvi := 1;\r
+ Zadnji := 1\r
+ ELSE\r
+ Zadnji := AddOne(Zadnji)\r
+ END;\r
+ Element[Zadnji] := x\r
+ END\r
+ END\r
+END AddRear;\r
+\r
+END RedOpsl.\r