栈——用链表实现栈操作

这里写目录标题

在这里插入图片描述
一、添加一个元素到栈顶

def push(self,data):
	node=Node(item,self.__top)
	node.next=self.__top
	self.__top=node
	self._size+=1

二、弹出栈顶元素

def pop(self)
	if self.is_empty():
			print('栈为空')
	else:
			value=self.top.data
			self.__top=self.__top.next
			self._size-=1	
			return value

三、返回栈顶元素

def top(self):
	if self.is_empty():
		print('栈顶元素为空')
	else:
		return self.__top.data

四、判断栈是否为空

def is_empty(self)
	return self.__size==0

五、判断栈中数据数量

def size(self):
	return self.__size

代码块

class Node:
    def __init__(self,data,_next=None):
        self.data=data      #数据域
        self.next=_next     #指针域

class Stack:
    def __init__(self):
        #以链表的第一个节点作为栈顶
        self.__top=None       #栈顶元素,
        self._size=0         #栈内元素个数

    def push(self, item):
        # 添加一个元素到栈顶
        # 让self.top指向新的节点
        # 让新的节点的next指向原本的节点
        #self.__top = Node(item, self.__top)

        node=Node(item,self.__top)
        node.next=self.__top
        self.__top = node
        self._size+=1

    def pop(self):
        # 要判断栈是否为空
        if self.is_empty():
            raise ValueError('栈为空')
        value=self.__top.data
        #让栈顶元素指向下一个节点
        self.__top=self.__top.next
        self._size-=1
        return value

    def top(self):
        # 要判断栈是否为空
        if self.is_empty():
            raise ValueError('栈为空')
        return self.__top.data

    def is_empty(self):
        return self._size == 0

        #return self.__top == None

    def size(self):
        return self._size

if __name__ == '__main__':
    stack = Stack()
    stack.push(1)
    stack.push(2)
    stack.push(3)
    stack.push(4)
    print(stack.size())
    print(stack.pop())
    print(stack.pop())
    print(stack.pop())
    print(stack.pop())
    print(stack.pop())
    print(stack.is_empty())
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值