数据结构与算法-栈

python(数据结构算法)----匹配 题目: 在一个用字符串描述的表达式“{[a+b]/f+(c+d)}”中存在大、中、小括弧,请编写程序,基于,实现对输入的一串字符串的依次扫描,并检查括号匹配成功。 示例: 输入样例:{{}}()(hell0){({world}{})} 输出:括号匹配成功 输入样例:{{}}()(hell0){({world}(})} 输出:括号匹配不成功 分析 1假设输入样例为:{{}}()(h... 阅读详情

一、栈的特点

保证元素后进先出关系的容器

二、顺序栈

栈的空间是固定的,顺序对里面的元素进行入栈,出栈

class Stack:
    def __init__(self, maxsize):
        self.max = maxsize  # 栈的最大容量
        self.elem = [None for i in self.max]  # 顺序栈
        self.top = 0  # 栈顶指针
        self.base = 0  # 栈底指针

    # 压栈
    def push(self, elem):
        if self.top - self.base == self.max:
            print("栈已满")
            return False
        self.elem[self.top] = elem
        self.top += 1

    # 弹栈
    def pop(self):
        if self.top == 0:
            print("栈为空")
            return False
        self.elem[self.top] = None
        self.top -= 1

    # 取栈顶元素
    def get_top(self):
        return self.elem[self.top - 1]

三、链栈

可以动态实现栈空间的增减

# 链栈节点类
class StackNode:
    def __init__(self, elem=None):
        self.elem = elem  # 数据
        self.next = None  # 指针

# 链栈类
class LinkStack:
    def __init__(self):
        self.link_top = None  # 链栈的指针,指向栈顶元素

    # 压栈
    def push(self, elem):
        s = StackNode(elem)
        s.next = self.link_top
        self.link_top = s

    # 弹栈
    def pop(self):
        node = self.link_top.elem
        self.link_top = self.link_top.next
        return node
    
    # 获取栈顶元素
    def get_top_elem(self):
        return self.link_top.elem
    
    # 获取链栈长度
    def get_len(self):
        top = self.link_top
        count = 0
        while top:
            count += 1
            top = top.next
        return count

优先级队列-python 优先级队列 在之前写最短路径,和哈夫曼编码的时候都用到了优先级队列优化,用的是c++中的包,priority_Queue。 那在Python中会以什么形式存在呢。 class Array(object): def __init__(self, maxsize=None): self.elem = [None] * maxsize self.length = ... 阅读详情

相关推荐

数据结构算法——和队列

和队列是两种重要的线性结构,本篇文章详细总结了数据结构算法和队列的终点知识,并且结合代码片段实现其基本操作,干货满满,每一句话都是重点,希望能给更多的小伙伴在学习数据结构算法时带来一定帮助...

小田是个程序员的博客欢迎你的到来呀~ 2万+

数据结构算法5-

什么是如何实现?有哪些常见应用?

未知的希望,是我不灭的信仰 463

数据结构算法——

前言     为了面试,时隔一年不得不重新复习数据结构算法,这次重新复习很有收获,以前在上课总有不清晰的知识,通过这次手写一遍和敲一遍代码,以前不清晰的知识都变得清晰了,果然学编程还是得多敲代码,多敲代码,多敲代码,也要多总结,多总结,多总结。 学习资源 视频 黑马程序员  数据结构算法 是一种基于先进后出(FILO)的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入底,最后的数据在顶,需要读数据的时候从顶开始弹出数据(

qq_45767014的博客 345

数据结构--算法

# include # include # include typedef struct Node//节点的数据类型 { int data; struct Node * pNext; }NODE,*PNODE; typedef struct Stack// { PNODE pTop; PNODE pBottom; }STACK,*PSTACK; void init(PSTA

muzishuize的专栏 394

C语言数据结构算法--简单实现的出

删除顶元素,top 减 1。压入算法过程为:定义新的结点 p、修改新结 点的指针(指向原顶结点 top)、给新结点 p 赋 值为 x、修改新顶的指针(指向新结点 p)。弹出算法过程为:将顶结点 top 赋给 p、取结点 p 的值并赋给 x、调整顶位置(指向结点 p 的下一个结点)、释放结点 p 的空间。利用一组地址连续的存储单元依次存放自底到顶的数据元素。当的长度无法估计时最好用的链式表示,如下图所示。有两种表示形式:的表示和实现、的 链式表示。结点包含数据元素和指针两个数据域。

2403_83182682的博客 2191

数据结构算法——的运用

数据结构——的应用 雨中漫步 下面将中序表达式转化为后缀表达式,再将后续表达式翻译运算 //求简单表达式的值 #include <stdio.h> #include <stdlib.h> #define MaxSize 100 //--------------------------------------------------------- //--运算符基本运算-...

abcwsp的博客 568

数据结构算法的用法

顺序 首先让我们来了解什么是? 是存放数据对象的一种特殊容器,中的元素始终遵循后进先出的顺序 利用这个特点我们就能解决许多实际生活中的问题. 博主在这篇博客中打算利用来解决生活中的打字问题. 让我们来假设这样一个场景 : 你正在修改你自己的QQ签名(最多保存50个字),但是打着打着打错了一个字,这时候你就需要将打错的一个或者几个字删掉 这就要用到我们的了,利用这种后进先出的特点就能 实...

dearQiHao的博客 1491

[数据结构算法] 入操作总结

最近要参加数据结构算法期末考试了,在这里总结一下出的一些常规操作。 #include <stdlib.h> #include "stdio.h" #include<string.h> typedef char SElemType; //数据元素的类型 #define STACK_INIT_SIZE 10 //存储...

weixin_30827565的博客 1316

C++数据结构算法——队列

C++第二阶段——数据结构算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C++查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用来学习,刷题使用力扣网站,不定时更新,欢迎关注!

weixin_63866037的博客 1912

数据结构算法——队列

讲解数据结构算法——队列

caicaptain 454

数据结构算法的应用

#数据结构算法的应用

amenga123的博客 437

03数据结构算法刷题之【】篇

除了去年11月份以及今年近几月的算法刷题之外,只有在当时20年蓝桥杯准备的时候才刷过一些题,在当时就有接触到一些动归、递归回溯、贪心等等,不过那会也还是一知半解,做的题目也特别少,因为考虑到之后面试有算法题以及数据结构算法对于一个程序员十分重要,我也开始了刷题之路。我目前的学习数据结构算法及刷题路径:1、学习数据结构的原理以及一些常见算法。2、代码随想录:跟着这个github算法刷题项目进行分类刷,在刷题前可以学习一下对应类别的知识点,而且这里面每道题都讲的很详细。牛客网—面试必刷101题。......

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 470

数据结构和队列 + 经典算法

本文完整实现了和队列的数据结构,以及和队列的一些经典算法题,让我们更加清楚了解这两种数据结构特点,并熟悉运用。

x_p96484685433的博客 2084

算法数据结构线性表之和队列

和队列的实现

2301_78901562的博客 2297

数据结构算法

数据结构的基本功能接口 并基于Vector模板类作为父类,产生子类Stack,以及的典型应用 from Vector import Vector class Stack(Vector): def __init__(self): super(Stack,self).__init__() # 实现的 class 继承自 向量模板类 ...

WYXHAHAHA123的博客 215

数据结构算法】:

本文主要争对对的运用、基础理解和代码实现,其中对逆波兰表达式等进行了分析、讲解。

Baridhu的博客 2276

数据结构 和队列常见算法问题

数据结构和队列常见算法 算法和问题来自于试卷,辅导书,以及网络。 // 数据结构 typedef struct { int data[Maxsize]; int top; }Sqstack; ```//顺序 typedef struct { int data[Maxsize]; int front,rear; }Squeue; 算法3.1.1 假设I,O分别表示入和出操作。的初态和终态均为空,入和出的操作序列可表示为仅由I和O组成的序列,可操作的序列称为合

qq_43128902的博客 1165

数据结构算法详解

目录什么是设计介绍数组实现结构设计push插入s 什么是 百度百科上,是这么定义的: (stack)又名堆,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为顶,相对地,把另一端称为底。向一个插入新元素又称作进、入或压,它是把新元素放到顶元素的上面,使之成为新的顶元素;从一个删除元素又称作出或退,它是把顶元素删除掉,使其相邻的元素...

bigsai 7911
上一篇: 数据结构与算法-链表
下一篇: 数据结构与算法-队列
Z_ForWard
博客等级 码龄9年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Z_ForWard

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

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

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

打赏作者

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

抵扣说明:

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

余额充值