Browse Source

first commit

Eric Streit 5 months ago
commit
3a1a1f6391

+ 0 - 0
DoubleLinkedList/DoubleLinkedList.def


+ 0 - 0
DoubleLinkedList/DoubleLinkedList.mod


+ 0 - 0
DynArray/DynArray.def


+ 0 - 0
DynArray/DynArray.mod


+ 0 - 0
Fifo/Fifo.def


+ 0 - 0
Fifo/Fifo.mod


+ 0 - 0
Lifo/Fifo.mod


+ 0 - 0
Lifo/Lifo.def


+ 28 - 0
SimpleLinkedList/SingleLinkedList.def

@@ -0,0 +1,28 @@
+DEFINITION MODULE SingleLinkedList;
+
+TYPE 
+  List ;
+
+VAR
+  result : BOOLEAN;
+
+
+(*
+PROCEDURE SearchItem ( item : ; compare : PROC ) : BOOLEAN;
+
+PROCEDURE Traverse (l : List; toDo : PROC);
+*)
+PROCEDURE Empty (l : List): BOOLEAN ;
+(*
+PROCEDURE RemoveItem (): BOOLEAN;
+
+PROCEDURE AddItem (): BOOLEAN;
+*)
+
+PROCEDURE DeleteAllItems (l : List);
+
+PROCEDURE Free (VAR l : List);
+
+PROCEDURE Init (VAR l : List; mode : BOOLEAN ; p : PROC);
+  
+END SingleLinkedList.

+ 87 - 0
SimpleLinkedList/SingleLinkedList.mod

@@ -0,0 +1,87 @@
+IMPLEMENTATION MODULE SingleLinkedList;
+
+FROM  SYSTEM IMPORT ADDRESS;
+FROM Storage IMPORT ALLOCATE, DEALLOCATE;
+
+TYPE 
+  ElementPtr = POINTER TO Element;
+  Element    = RECORD
+                 pos : CARDINAL;
+                 next : ElementPtr;
+                 item : ADDRESS;
+              END;  
+  List      = POINTER TO ListRec;            
+  ListRec   = RECORD
+                firstElement : ElementPtr;
+                lastElement  : ElementPtr;
+                homogene : BOOLEAN; (* allows or not homogene items                            *)
+                CheckType : PROC;   (* procedure to check if the elements are of the same type *)
+              END; 
+                      
+
+(*
+PROCEDURE SearchItem ( item : ; compare : PROC ) : BOOLEAN;
+
+  BEGIN
+    ;
+  END Seach;
+
+PROCEDURE Traverse (l : List; toDo : PROC);
+
+  BEGIN
+    ;
+  END Traverse;
+*)
+PROCEDURE Empty (l : List): BOOLEAN ;
+
+  BEGIN
+    IF l^.firstElement = NIL THEN
+      RETURN TRUE
+    ELSE 
+     RETURN FALSE 
+    END      
+  END Empty;
+(*
+PROCEDURE RemoveItem (): BOOLEAN;
+
+  BEGIN
+    ;
+  END Remove;
+
+PROCEDURE AddItem (): BOOLEAN;
+
+  BEGIN
+    ;
+  END Add;
+
+*)
+
+PROCEDURE DeleteAllItems (l : List);
+
+BEGIN
+
+END DeleteAllItems;
+
+PROCEDURE Free ( VAR l : List);
+
+BEGIN 
+  DeleteAllItems(l);
+  l^.firstElement := NIL;
+  l^.homogene := TRUE ;
+  l^.CheckType := NIL;
+  DISPOSE (l);
+END Free;
+
+PROCEDURE Init ( VAR l : List; mode : BOOLEAN ; p : PROC );
+
+  BEGIN
+    NEW (l);
+    l^.firstElement := NIL;
+    l^.homogene := mode;
+    l^.CheckType := p;
+  END Init;
+
+BEGIN
+  (* Initialization of the SingleLinkedList structure *)
+  
+END SingleLinkedList.

BIN
SimpleLinkedList/SingleLinkedList.o


+ 19 - 0
SimpleLinkedList/Tests/testSingleLinkedList1.mod

@@ -0,0 +1,19 @@
+MODULE testSingleLinkedList1;
+
+IMPORT SingleLinkedList;
+FROM InOut IMPORT Write, WriteLn, WriteString, WriteCard;
+
+VAR 
+  oneList : SingleLinkedList.List;
+
+BEGIN
+  SingleLinkedList.Init(oneList, FALSE , NIL );
+  IF SingleLinkedList.Empty(oneList) THEN
+    WriteString("liste vide");
+    WriteLn
+  ELSE
+    WriteString("y'a un stuck ;) ");
+    WriteLn
+  END;    
+  SingleLinkedList.Free (oneList);
+END testSingleLinkedList1.

BIN
SimpleLinkedList/testSingleLinkedList1