python 数据结构与算法

栈、队列、双端列表、链表

文章暂存

systemime
2020-03-22
2 min

Python 栈、队列、双端列表、链表实现

#

class Stack():
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return len(self.items) - 1

    def isEmpty(self):
        return self.items == []

    def size(self):
        return len(self.items)

# 队列

class Queuee(object):
    def __init__(self):
        self.items = []

    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        return self.items.pop()

    def isEmpty(self):
        return self.items == []

    def size(self):
        return len(self.items)

# 双端队列

class Deque():
    """
    双端队列
    队尾-------队头
    """
    def __init__(self):
        self.items = []

    def addFront(self, item):
        # 从哪进从哪出,想从队头取123,就得冲队尾插入123才行
        self.items.insert(0, item)

    def addRear(self, item):
        self.items.append(item)

    def removeFront(self):
        # 出来了,
        return self.items.pop()

    def removeRear(self):
        return self.items.pop(0)

    def isEmpty(self):
        return self.items == []

    def size(self):
        return len(self.items)

# 链表

class Node():
    def __init__(self, item):
        self.items = item
        self.next = None


class Link():
    def __init__(self):
        self._head = None

    def add(self, item):  # 新创建节点指向head指向,head断开指向新建node
        node = Node(item)
        node.next = self._head
        self._head = node

    def travel(self):
        link = ''
        cur = self._head
        while cur:
            link += (str(cur.items) + ' ')
            cur = cur.next
        print(link)

    def isEmpty(self):
        return self._head == None

    def size(self):
        cur = self._head
        count = 0
        while cur:
            count += 1
            cur = cur.next
        return count

    def append(self, item):
        node = Node(item)
        cur = self._head
        p = Node
        while cur:
            p = cur
            cur = cur.next
        p.next = node

    
    # 定向删除,定向插入,不再提


link = Link()
link.add(2)
link.add(3)
link.add(4)
link.append(10)
link.travel()
print(link.isEmpty(), link.size())
上次编辑于: 2021/5/24 下午1:55:49