Jump to content

Stack: Difference between revisions

733 bytes removed ,  12 years ago
Cleaned up push and pop by removing the need for make-node
(Added attribution)
(Cleaned up push and pop by removing the need for make-node)
Line 625:
01 node-info PICTURE X(10).
PROCEDURE DIVISION USING stack node-info.
CALLALLOCATE "make-node" USING
BY CONTENT node-info
BY REFERENCE ADDRESS OF node
END-CALL
CALL "pointerp" USING
BY REFERENCE ADDRESS OF node
Line 636 ⟶ 633:
CALL "stack-overflow-error" END-CALL
ELSE
BY CONTENTMOVE node-info TO info OF node
SET link OF node TO head OF stack
SET head OF stack TO ADDRESS OF node
Line 660 ⟶ 658:
ELSE
SET ADDRESS OF node TO head OF stack
SET head OF stack TO link OF node
MOVE info OF node TO node-info
SET head OF stack TO link OF node
FREE ADDRESS OF node
END-IF
BY REFERENCEFREE ADDRESS OF node
GOBACK.
END PROGRAM pop.
Line 720 ⟶ 718:
GOBACK.
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.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.