gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
dodati Stek i RedOpsl kodovi u repo (ne i skriptu)
[spa1skripta-public.git] / kodovi / stek-redopsl / RedOpsl.mod
diff --git a/kodovi/stek-redopsl/RedOpsl.mod b/kodovi/stek-redopsl/RedOpsl.mod
new file mode 100755 (executable)
index 0000000..fc5cf09
--- /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
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner