diff --git "a/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/2\347\217\255/2\347\217\255_chaos/\347\254\254\344\272\214\345\215\201\344\272\214\345\221\250/.keep" "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/2\347\217\255/2\347\217\255_chaos/\347\254\254\344\272\214\345\215\201\344\272\214\345\221\250/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/2\347\217\255/2\347\217\255_chaos/\347\254\254\344\272\214\345\215\201\344\272\214\345\221\250/python_linked_list.py" "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/2\347\217\255/2\347\217\255_chaos/\347\254\254\344\272\214\345\215\201\344\272\214\345\221\250/python_linked_list.py" new file mode 100644 index 0000000000000000000000000000000000000000..200825214de3272cf251f793cc745590594e4ef8 --- /dev/null +++ "b/\347\254\254\344\272\214\346\234\237\350\256\255\347\273\203\350\220\245/2\347\217\255/2\347\217\255_chaos/\347\254\254\344\272\214\345\215\201\344\272\214\345\221\250/python_linked_list.py" @@ -0,0 +1,98 @@ +class Node: + def __init__(self,val): + self.val = val + self.next = None + + +class LinkedList: + def __init__(self): + self.head = None + self.end = self.head + + def append(self, node): + if not self.head: + self.head = node + else: + self.end.next = node + self.end = node + + def insert(self, index, node): + cur = self.head + if index == 0: + node.next = self.head + self.head = node + return + + for i in range(index-1): + cur = cur.next + if cur is None: + raise IndexError("Linked list insert node exceed max length") + + node.next, cur.next = cur.next, node + if node.next is None: + self.end = node + + def remove(self, node): + cur = self.head + prev = None + while cur: + if cur.val == node.val: + if prev is None: + self.head = cur.next + else: + prev.next = cur.next + cur.next = None + + if prev and prev.next is None: + self.end = prev + return + prev = cur + cur = cur.next + + def reverse(self): + if self.head and self.head.next: + cur = self.head.next + prev = self.head + + self.node.next = None + self.end = prev + while cur: + next = cur.next + cur.next = prev + prev = cur + cur = next + self.head = prev + else: + return + + def __str__(self): + cur = self.head + res = "" + while cur: + res += str(cur) + '\t' + cur = cur.next + return res + +class MyStack: + def __init__(self, _size=10): + self.stack = [] + self.top = -1 + self.size = _size + + def is_full(self): + return self.top == self.size - 1 + + def push(self, item): + if self.is_full(): + raise Exception("StackOverFlow") + self.stack.append(item) + self.top += 1 + + def is_empty(self): + return self.top == -1 + + def pop(self): + if self.is_empty(): + raise Exception('StackUnderFlow') + self.top -= 1 + return self.stack.pop() \ No newline at end of file