数据结构_python_栈

1.栈(stack),有进有出,有顺序结构和链表结构。在操作上有进有出,形成了线性结构的关系。
(1)链表结构,在内存上存储的位置可以是一块一块的,通过指针的指向将他们连接在一起。可以灵活运用内存,但算法较为复杂。
(2)顺序结构,是用数组来实现,比较简单,但是数组大小是事先规划好的,大了浪费内存,小了不够用。

2.栈的操作总是在栈顶进行(top),分别使用压入(push)、弹出(pop)操作对数据进行写入和读取。

3.如果用排队来比喻栈,链表结构就是银行的取号排队,顺序结构就是食堂打饭窗口排队。队尾就是栈顶,队尾的那个人走了就是弹出,队尾又来了一个人就是压入,那么那个人就是新的栈顶。

4.代码实现
(1)链表实现:链表实现栈
(2)数组实现:

import numpy as np
max_stack=100#最大的栈长
global stack
stack=[None]*max_stack

# Stack[0]=0#栈底
top=-1#栈顶
def is_empty():
    if top==-1:
        return True
    else:
        return False


def show_element():
    global max_stack
    global stack
    # for i in  range(max_stack):
    #     print(stack[i])
    print(stack)

def push(data):
    # 判断是否已经超出最大栈长,再将数据入栈
    global max_stack
    global stack
    global top
    if top>=max_stack:
        print("top={}栈满,入栈失败".format(top))
    else:
        top += 1
        stack[top]=data


def pop():
    global max_stack
    global stack
    global top
    if is_empty():
        print("空栈,弹出数据失败")
    else:
        print(stack[top])
        top-=1

#  '__main__':

for i in range(10):
    stack[i]=np.random.randint(1,10)
    top+=1



print("当前栈的使用情况:",stack)

operate=4
while operate!=0:
    print("入栈操作请输入1,出栈操作请输入2,查看当前栈的使用情况请输入3,结束请输入0")
    operate=int(input("输入:"))
    if operate==1:
        data=int(input("输入入栈的数值:"))
        push(data)
    elif operate==2:
        pop()
    elif operate==3:
        show_element()

4.代码运行效果:

实验效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值