Added deque.

This commit is contained in:
Jacob Signorovitch
2024-12-03 09:01:01 -05:00
parent f6654a4ce0
commit c5f494f55f
37 changed files with 154 additions and 73 deletions

28
deque/.project Normal file
View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>deque</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<filteredResources>
<filter>
<id>1733232021426</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

View File

@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View File

@@ -0,0 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=21
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=21

68
deque/src/deque/Main.java Normal file
View File

@@ -0,0 +1,68 @@
package deque;
import tester.Tester;
class Examples {
Sentinel<String> exampleSentinel;
void init() {
exampleSentinel = new Sentinel<String>();
}
void testSentinel(Tester t) {
init();
t.checkExpect(exampleSentinel.nxt, exampleSentinel);
}
}
// A doubly-linked list element.
abstract class ANode<PointsTo> {
PointsTo nxt; // Next element.
PointsTo pre; // Previous element.
ANode(PointsTo nxt, PointsTo pre) {
this.nxt = nxt;
this.pre = pre;
}
}
// Self-referential node.
abstract class ASRefNode {
ASRefNode nxt;
ASRefNode pre;
ASRefNode() {
this.nxt = this;
this.pre = this;
}
}
class Deque<A> {
Sentinel<A> sentinel;
Deque(Sentinel<A> sentinel) {
this.sentinel = sentinel;
}
}
class Sentinel<T> extends ANode<ANode<T>> {
Sentinel() {
super(null, null);
this.nxt = this;
}
}
class Node<T> extends ANode<Node<T>> {
T val;
Node(T val) {
super(null, null);
this.val = val;
}
}