Skip to content

Instantly share code, notes, and snippets.

@jordan-carson
Created October 14, 2018 16:54
Show Gist options
  • Save jordan-carson/81fd02fe45c99e0bece9987d548321fc to your computer and use it in GitHub Desktop.
Save jordan-carson/81fd02fe45c99e0bece9987d548321fc to your computer and use it in GitHub Desktop.
test
class BaseDataStructure:
def __init__(self):
self._items = []
def isEmpty(self):
return self._items == []
def peek(self):
return self._items[len(self._items) - 1]
def size(self):
return len(self._items)
class Stack2(BaseDataStructure):
def push(self, item):
return self._items.append(item)
def pop(self):
return self._items.pop()
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
return self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
class Queue:
def __init__(self):
self.items = []
def __str__(self):
return 'queue([' + ', '.join([i for i in self.items]) + '])'
def isEmpty(self):
return self.items == []
def enqueue(self, item):
return self.items.insert(0, item)
def size(self):
return len(self.items)
def dequeue(self):
return self.items.pop()
class Dequeue:
def __init__(self):
self.items = []
def __repr__(self):
return 'dequeue(' + str(self.items) + ')'
def __str__(self):
return str(self.items)
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
def addFront(self, item):
return self.items.append(item)
def addRead(self, item):
return self.items.insert(0, item)
def removeRear(self):
return self.items.pop(0)
def removeFront(self):
return self.items.pop()
class Node:
def __init__(self, initdata):
self.data = initdata
self.next = None
def __str__(self):
return 'Node Object: Nodes are ' + str(self.data)
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self, newdata):
self.data = newdata
def setNext(self, newnext):
self.next = newnext
class OrderedList:
def __init__(self):
self.head = None
def isEmpty(self):
return self.head is None
def size(self):
current = self.head
count = 0
while current is not None:
count += 1
current = current.getNext()
return count
def remove(self, item):
current = self.head
previous = None
found = False
while not found:
if current.getData() == item:
found = True
else:
previous = current
current = current.getNext()
if previous is None:
self.head = current.getNext()
else:
previous.setNext(current.getNext())
def search(self, item):
current = self.head
found = False
stop = False
while current is not None and not stop and not found:
if current.getData() == item:
found = True
else:
if current.getData() > item:
stop = True
else:
current = current.getNext()
return found
def add(self, item):
current = self.head
previous = None
stop = False
while current is None and not stop:
if current.getData() > item:
stop = True
else:
previous = current
current = current.getNext()
temp = Node(item)
if previous is None:
temp.setNext(self.head)
self.head = temp
else:
temp.setNext(current)
previous.setNext(temp)
class HashTable:
def __init__(self):
self.size = 11
self.slots = [None] * self.size
self.data = [None] * self.size
def put(self, key, data):
hashvalue = self.hashfunction(key, len(self.slots))
if self.slots[hashvalue] is None:
self.slots[hashvalue] = key
self.data[hashvalue] = data
else:
if self.slots[hashvalue] == key:
self.data[hashvalue] = data
else:
nextslot = self.rehash(hashvalue, len(self.slots))
while self.slots[nextslot] is not None and self.slots[nextslot] != key:
nextslot = self.rehash(nextslot, len(self.slots))
if self.slots[nextslot] is None:
self.slots[nextslot] = key
self.data[nextslot] = data
else:
self.data[nextslot] = data
def hashfunction(self, key, size):
return key % size
def rehash(self, oldhash, size):
return (oldhash + 1) % size
def get(self,key):
startslot = self.hashfunction(key, len(self.slots))
data = None
stop = False
found = False
position = startslot
while self.slots[position] is not None and not found and not stop:
if self.slots[position] == key:
found = True
data = self.data[position]
else:
position = self.rehash(position, len(self.slots))
if position == startslot:
stop = True
return data
def __getitem__(self, key):
return self.get(key)
def __setitem__(self, key, data):
self.put(key, data)
class BinaryTree:
def __init__(self, rootObj):
self.key = rootObj
self.leftChild = None
self.rightChild = None
def insertLeft(self, newNode):
if self.leftChild is None:
self.leftChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self, newNode):
if self.rightChild is None:
self.rightChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.rightChild = self.rightChild
self.rightChild = t
def getRightChild(self):
return self.rightChild
def getLeftChild(self):
return self.leftChild
def setRootVal(self, obj):
self.key = obj
def getRootVal(self):
return self.key
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment