Object
ss_linked_list.py
& SLinkedList.java
Python | Java |
---|---|
class SSLNode: def __init__(self, item, nextnode): self.element = item self.next = nextnode class SLinkedList: def __init__(self): self.first = None self.size = 0 def __str__(self): outstr = "-" node = self.first while node: outstr = outstr + str(node.element) + "-" node = node.next return outstr def add_last(self, element): newnode = SSLNode(element, None) if self.first == None: self.first = newnode else: node = self.first while node.next: node = node.next node.next = newnode self.size = self.size + 1 |
class SSLNode { Object element; SSLNode next; public SSLNode(Object item, SSLNode nextnode) { element = item; next = nextnode; } } class SLinkedList { private SSLNode first; private int size; public SLinkedList() { first = null; size = 0; } public String toString() { String outstr = "-"; SSLNode node = first; while (node != null) { outstr = outstr + node.element.toString() + "-"; node = node.next; } return outstr; } public void addLast(Object element) { SSLNode newnode = new SSLNode(element, null); if (first == null) { first = newnode; } else { SSLNode node = first; while (node.next != null) { node = node.next; } node.next = newnode; } size = size + 1; } } |
list_tester.py
and ListTester.java
Python | Java |
---|---|
from s_linked_list import SSLNode from s_linked_list import SLinkedList def test_linkedlist(): mylist = SLinkedList() mylist.add_last('a') mylist.add_last('b') mylist.add_last('c') print(mylist) test_linkedlist() |
class ListTester { public static void main(String[] args) { SLinkedList mylist = new SLinkedList(); mylist.addLast("a"); mylist.addLast("b"); mylist.addLast("c"); System.out.println(mylist); } } |
java.util.ArrayList
java.util.LinkedList
java.util.Stack
java.util.ArrayDeque
java.util.PriorityQueue
java.util.HashSet
java.util.TreeSet
java.util.HashMap
java.util.LinkedHashMap
java.util.TreeMap
Object
sLinkedList<LibraryBook> library = new LinkedList<LibraryBook>();(You'll need to
import java.util.LinkedList
)
LibraryBook
s (or subclasses of
LibraryBook
, if any)
library.addLast(new Cow()); // error
LibraryBook b = library.getFirst();
class SSLNode<T> { T element; SSLNode next; public SSLNode(T item, SSLNode nextnode) { element = item; next = nextnode; } } class SLinkedList<T> { private SSLNode first; private int size; public SLinkedList() { first = null; size = 0; } public String toString() { String outstr = "-"; SSLNode node = first; while (node != null) { outstr = outstr + node.element.toString() + "-"; node = node.next; } return outstr; } public void addLast(T element) { SSLNode newnode = new SSLNode<T>(element, null); if (first == null) { first = newnode; } else { SSLNode node = first; while (node.next != null) { node = node.next; } node.next = newnode; } size = size + 1; } }
class ListTester { public static void main(String[] args) { SLinkedList<String> mylist = new SLinkedList<String>(); mylist.addLast("a"); mylist.addLast("b"); mylist.addLast("c"); System.out.println(mylist); } }
LibraryBook
offers two constructors, three getters,
and several setters (takeOut
, bringBack
and
two versions of acquire
)
java.util.LinkedList
offers two constructors and
nearly 60 methods
interface Stack { public void push(Object element); public Object pop(); public Object top(); public int length(); public boolean isEmpty(); }
class ArrayBasedStack implements Stack { private Object[] s; private int capacity; private int size; public ArrayBasedStack(int capacity) { this.capacity = capacity; s = new Object[capacity]; } public void push(Object element) { if (size == capacity) { return; } s[size] = element; size = size + 1; } public Object pop() { if (size == 0) { return null; } size = size - 1; return s[size]; } public Object top() { if (size == 0) { return null; } return s[size - 1]; } public int length() { return size; } public boolean isEmpty() { return size == 0; } }
import java.util.LinkedList; class LinkedListBasedStack implements Stack { private LinkedList s; public LinkedListBasedStack() { s = new LinkedList(); } public void push(Object element) { s.addFirst(element); } public Object pop() { return s.remove(); } public Object top() { if (s.size() == 0) { return null; } return s.getFirst(); } public int length() { return s.size(); } public boolean isEmpty() { return s.isEmpty(); } }
Stack s1; Stack s2; s1 = new ArrayBasedStack(10); s2 = new LinkedListBasedStack();
s1.push(new Cow()); s2.push("Hi")
LinkedListBasedStack
to an ArrayBasedStack
in code that doesn't use Java interfaces:
public void method1() { LinkedListBasedStack s = new LinkedListBasedStack(); s.push(new Cow()); method2.(s); method3(s); } public void method2(LinkedListBasedStack st) { System.out.println(st.top()); } public void method2(LinkedListBasedStack st) { st.push(new Pig()); }
LinkedListBasedStack
to using an ArrayBasedStack
in code that does use Java interfaces:
public void method1() { Stack s = new LinkedListBasedStack(); s.push(new Cow()); method2.(s); method3(s); } public void method2(Stack st) { System.out.println(st.top()); } public void method2(Stack st) { st.push(new Pig()); }