0
点赞
收藏
分享

微信扫一扫

【数据结构专项】链表(3) —— 用单链表实现栈(Python)


用单链表实现栈

栈顶位于单链表的头结点处,维护头指针和链表长度;每次压入元素则在头结点前插入新结点,取出元素则删除头结点。

class LinkedStack:
"""单链表实现的栈"""

class _Node:
""""""
__slots__ = "value", "next" # 因为会创建很多个结点对象,因此使用__slots__来减少内存占用

def __init__(self, value, next):
self.value = value
self.next = next

def __init__(self):
self._head = None # 头指针
self._size = 0 # 栈中元素的数量

def __len__(self):
"""返回栈中元素的数量"""
return self._size

def is_empty(self):
"""返回栈是否为空"""
return self._size == 0

def push(self, value):
"""向栈中压入元素"""
self._head = self._Node(value, self._head) # 构造链表对象
self._size += 1

def top(self):
"""查询栈顶元素"""
if self.is_empty():
raise ValueError("Stack is Empty")
return self._head.value

def pop(self):
"""取出栈顶元素"""
if self.is_empty():
raise ValueError("Stack is Empty")
ans = self._head.value
self._head = self._head.next
self._size -= 1
return ans

操作的时间复杂度:

操作

时间复杂度

len(S)

O ( 1 ) O(1) O(1)

S.is_empty()

O ( 1 ) O(1) O(1)

S.push(value)

O ( 1 ) O(1) O(1)

S.top()

O ( 1 ) O(1) O(1)

S.pop()

O ( 1 ) O(1) O(1)




举报

相关推荐

0 条评论