Stack: Difference between revisions
Content deleted Content added
Added attribution |
Cleaned up push and pop by removing the need for make-node |
||
Line 625: | Line 625: | ||
01 node-info PICTURE X(10). |
01 node-info PICTURE X(10). |
||
PROCEDURE DIVISION USING stack node-info. |
PROCEDURE DIVISION USING stack node-info. |
||
ALLOCATE node |
|||
⚫ | |||
⚫ | |||
END-CALL |
|||
CALL "pointerp" USING |
CALL "pointerp" USING |
||
BY REFERENCE ADDRESS OF node |
BY REFERENCE ADDRESS OF node |
||
Line 636: | Line 633: | ||
CALL "stack-overflow-error" END-CALL |
CALL "stack-overflow-error" END-CALL |
||
ELSE |
ELSE |
||
⚫ | |||
SET link OF node TO head OF stack |
SET link OF node TO head OF stack |
||
SET head OF stack TO ADDRESS OF node |
SET head OF stack TO ADDRESS OF node |
||
Line 660: | Line 658: | ||
ELSE |
ELSE |
||
SET ADDRESS OF node TO head OF stack |
SET ADDRESS OF node TO head OF stack |
||
⚫ | |||
MOVE info OF node TO node-info |
MOVE info OF node TO node-info |
||
⚫ | |||
FREE ADDRESS OF node |
|||
END-IF |
END-IF |
||
⚫ | |||
GOBACK. |
GOBACK. |
||
END PROGRAM pop. |
END PROGRAM pop. |
||
Line 720: | Line 718: | ||
GOBACK. |
GOBACK. |
||
END PROGRAM peek. |
END PROGRAM peek. |
||
IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. make-node. |
|||
DATA DIVISION. |
|||
LOCAL-STORAGE SECTION. |
|||
COPY p. |
|||
COPY node. |
|||
LINKAGE SECTION. |
|||
01 node-info PICTURE X(10). |
|||
01 node-pointer USAGE IS POINTER. |
|||
PROCEDURE DIVISION USING node-info node-pointer. |
|||
ALLOCATE node |
|||
CALL "pointerp" USING |
|||
BY REFERENCE ADDRESS OF node |
|||
BY REFERENCE p |
|||
END-CALL |
|||
IF nil |
|||
CALL "stack-overflow-error" END-CALL |
|||
ELSE |
|||
MOVE node-info TO info OF node |
|||
SET node-pointer TO ADDRESS OF node |
|||
END-IF |
|||
GOBACK. |
|||
END PROGRAM make-node. |
|||
IDENTIFICATION DIVISION. |
IDENTIFICATION DIVISION. |