首页 > 其他分享 >ds:栈

ds:栈

时间:2023-05-04 22:44:06浏览次数:21  
标签:单链 出栈 实现 top 链栈 顺序 ds

栈:一种线性表,特点是后进先出。因为是顺序表,所以可以用顺序表、链表实现。

->顺序栈:顺序表实现的栈

->链栈:单链表实现的栈,入栈=单链表的头插法,出栈=单链表依次删除表头后的元素。因为是单链表实现,所以也分为有头结点的单链表实现的链栈、无头结点的单链表实现的链栈

 

注意:

初始化栈时如果将栈顶指针(s.top)设为-1,那么push(stack &S,int x)时是先s.top++; 再s.top = x;出栈是先x = s.top;再s.top --;

初始化栈时如果将栈顶指针(s.top)设为0,那么push(stack &S,int x)时是先s.top = x; 再s.top++;出栈是先s.top --;再x = s.top;

对于顺序栈,因为顺序表长度有限最大为maxsize,所以入栈时要判断栈满:s.top == maxsize -1;出栈时要判断栈空:s.top ==-1;

 

代码实现略:实现和顺序表、单链表基本操作一样

标签:单链,出栈,实现,top,链栈,顺序,ds
From: https://www.cnblogs.com/jinziguang/p/17372765.html

相关文章

  • ds:带头结点的单链表与不带头结点的单链表区别
     写在前边:单链表都有头指针,不一定有头结点;有无头结点的单链表,定义时数据类型都一样,只是初始化时、插入、删除时不同。 一、带头结点的单链表头结点:为方便编写代码而设置的头结点。存储结构:L->头结点->a1->a2->NULL,头结点不存储数据初始化:malloc申请空间后要L->next=NULL......
  • ds:顺序表删除重复元素的算法
    算法思想:1.遍历顺序表、移动元素(把未匹配到目标数据的元素前移i-k个位置)intk=0;inti=0;k用来计数,i用来扫描顺序表。当匹配到目标元素时k++,未匹配到目标元素时就i++遍历,并且要将未匹配到的元素前移i-k个位置。2.修改顺序表的length为length-k 例:删除顺序表中值为x的所有......
  • #yyds干货盘点#python,Lambda
    lambda 关键字用于创建小巧的匿名函数。lambda a, b: a+b 函数返回两个参数的和。Lambda函数可用于任何需要函数对象的地方。在语法上,匿名函数只能是单个表达式。在语义上,它只是常规函数定义的语法糖。与嵌套函数定义一样,lambda函数可以引用包含作用域中的变量:>>>defmake_......
  • CF708C Centroids(换根dp)
    题意:给定一颗树,你有一次将树改造的机会,改造的意思是删去一条边,再加入一条边,保证改造后还是一棵树。请问有多少点可以通过改造,成为这颗树的重心?(如果以某个点为根,每个子树的大小都不大于\(\dfrac{n}{2}\),则称某个点为重心)思路:是今天遇到的一道有意思的换根dp呃呃。从题意来看......
  • 通过Handsontable实现像Excel一样编辑数据
    ​一、Handsontable是指什么?官网: http://handsontable.comHandsontable是一个JavaScript库,可以帮助您轻松实现类似Excel电子表格一样的编辑方式。在示范页面尝试一下就知道了,不仅可以像Excel那样输入数据,还有可指定单元格的格式、制作图表等丰富的功能。二、概要kintone作......
  • SSH工具远程登录Linux系统错误解决方法,错误提示Disconnected:No supported authentica
    一、使用轻量云控制面板的登录,sudosu获取root账号权限;二、执行passwd命令,输入新密码来修改root密码。三、修改密码登录为yes,步骤如下1、运行命令vi/etc/ssh/sshd_config2、将参数PasswordAuthentication设置为yes,前面不能有#号键3、重启SSH服务使用的系统是centos7.2,Cen......
  • [极客大挑战 2019]HardSQL,wp
    一:分析既然说了是HardSQL,肯定就不是万能密码这种简单的了1.首先判断字符型还是数字型我们首先输入payload:username=admin'--+&password=1发现好像有什么被过滤掉了。然后检查过滤符号,这里可以直接用bp爆破看看过滤了哪些字符,也可以简单测试一下这里我猜测过滤了空格, 然......
  • Android Service中的startService或者bindService的区别
    Service创建有两种方法:  startService或者bindService服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,即使调......
  • 傻逼 ds
    gym103687K.DynamicReachability首先看到这个巨大的时限\(12\operatorname{s}\),盲猜一手是\(bitset\)或者是分块结果两个都有最直观的想法肯定是直接搜,复杂度是\(O((n+m)q)\)的,不可以接受,但是这种做法太没有拓展性了,考虑一些有拓展性的做法,发现一般图传递闭包是\(O(\fr......
  • ds:单链表
    写在前边:单链表:1.带头结点的单链表:L头指针->头结点(data域不存数据元素,只指向下一个元素)->a1->a2->..->NULL2.不带头结点的单链表:L头指针->a1->a2...->NULL以上两种区别在于:无头结点的单链表在进行插入/删除元素时要对i=1的情况做特殊处理 一、带头结点的单链表基本操作#......