mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-11 22:54:43 -05:00
project09 - template
This commit is contained in:
48
09/List/List.jack
Normal file
48
09/List/List.jack
Normal file
@@ -0,0 +1,48 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/9/List/List.jack
|
||||
|
||||
/** Represents a linked list of integers. */
|
||||
class List {
|
||||
field int data; // an int value,
|
||||
field List next; // followed by a list of int values
|
||||
|
||||
/* Creates a List. */
|
||||
constructor List new(int car, List cdr) {
|
||||
let data = car; // the identifiers car and cdr are used in
|
||||
let next = cdr; // memory of the Lisp programming language
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Accessors. */
|
||||
method int getData() { return data; }
|
||||
method int getNext() { return next; }
|
||||
|
||||
/** Prints this list. */
|
||||
method void print() {
|
||||
// Sets current to the first element of this list
|
||||
var List current;
|
||||
let current = this;
|
||||
while (~(current = null)) {
|
||||
do Output.printInt(current.getData());
|
||||
do Output.printChar(32); // prints a space
|
||||
let current = current.getNext();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/** Disposes this List. */
|
||||
// By recursively disposing its tail.
|
||||
method void dispose() {
|
||||
if (~(next = null)) {
|
||||
do next.dispose();
|
||||
}
|
||||
// Calls an OS routine to free the memory of this object.
|
||||
do Memory.deAlloc(this);
|
||||
return;
|
||||
}
|
||||
|
||||
// More list processing methods can come here.
|
||||
|
||||
}
|
||||
17
09/List/Main.jack
Normal file
17
09/List/Main.jack
Normal file
@@ -0,0 +1,17 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/9/List/Main.jack
|
||||
|
||||
/** An example of creating and using List objects. */
|
||||
class Main {
|
||||
function void main() {
|
||||
// Creates and uses the list (2,3,5).
|
||||
var List v;
|
||||
let v = List.new(5,null);
|
||||
let v = List.new(2,List.new(3,v));
|
||||
do v.print(); // prints 2 3 5
|
||||
do v.dispose(); // disposes the list
|
||||
return;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user