From fd2b17ed0f01981ec82eaba58a401891c133b48c Mon Sep 17 00:00:00 2001 From: Jacob Signorovitch Date: Tue, 3 Dec 2024 15:47:18 -0500 Subject: [PATCH] The. --- deque/src/deque/Main.java | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/deque/src/deque/Main.java b/deque/src/deque/Main.java index 0ee3146..1eaf481 100644 --- a/deque/src/deque/Main.java +++ b/deque/src/deque/Main.java @@ -17,26 +17,20 @@ class Examples { } // A doubly-linked list element. -abstract class ANode { +abstract class ANode { - PointsTo nxt; // Next element. - PointsTo pre; // Previous element. + ANode nxt; // Next element. + ANode pre; // Previous element. - ANode(PointsTo nxt, PointsTo pre) { + ANode(ANode nxt, ANode pre) { this.nxt = nxt; this.pre = pre; } -} -// Self-referential node. -abstract class ASRefNode { - - ASRefNode nxt; - ASRefNode pre; - - ASRefNode() { - this.nxt = this; - this.pre = this; + void assignNode(ANode nxt, ANode pre) { + throw new UnsupportedOperationException( + "Can't call assignNode() on non-Node." + ); } } @@ -52,8 +46,10 @@ class Deque { class Sentinel extends ANode> { Sentinel() { + // To create an empty list, this Sentinel points to itself. super(null, null); this.nxt = this; + this.pre = this; } } @@ -65,4 +61,15 @@ class Node extends ANode> { super(null, null); this.val = val; } + + Node(T val, ANode nxt, ANode pre) { + this(val); + this.assignNode(nxt, pre); + } + + void assignNode(ANode nxt, ANode pre) { + throw new UnsupportedOperationException( + "Can't call assignNode() on non-Node." + ); + } }