• 2024-09-22单调栈 详解+例题
    昨天打AT碰到了一道单调栈的题,于是来复习一下单调栈栈内元素单调性有单调递增栈和单调递减栈实现:举个例子:假设入栈序列为142893要模拟一个单调递增栈:\(i=1\)时,栈为空,\(1\)入栈后仍然保持单调性,将\(1\)入栈;\(i=2\)时,栈顶元素为\(1\),\(4\)入栈后
  • 2024-08-09问题 K: 数据结构基础11-图的深度优先遍历
    题目描述读入一个邻接矩阵存储的无向图,输出它的深度优先遍历序列。  输入第1行1个整数n,表示图中的顶点数,2<=n<=100接下来的n行是一个n*n的邻接矩阵,a[i][j]=1表示顶点i和顶点j之间有直接边相连,a[i][j]=0表示没有直接边相连,保证i=k时a[i][j]=0,且a[i,j]=a[j,i].输出输
  • 2024-08-05日撸Java三百行(day14:栈)
    目录一、栈的基本知识1.栈的概念2.栈的功能3.栈的实现二、栈的代码实现1.栈的基本属性与方法2.栈的遍历3.入栈实现4.出栈实现5.数据测试6.完整的程序代码总结一、栈的基本知识1.栈的概念根据百度百科,我们知道“栈”是存储货物或供旅客住宿的地方,可引申为仓库
  • 2024-07-30函数调用时参数是如何从右至左入栈的
    在C++(以及C语言)中,函数调用时参数的入栈顺序通常是从右至左的。这一规则主要受到函数调用协议(CallingConvention)和编译器实现的影响。以下是对该过程的具体解释:一、参数入栈顺序从右至左入栈:当调用一个函数时,编译器会按照从右至左的顺序将参数的值压入调用栈中。这意味着
  • 2024-07-24
    栈是限定在一端(栈顶)进行插入删除操作的线性表(LIFO线性表)。数据结构研究内容数据集合:存储什么类型的数据,采用什么结构进行存储;使用规则:添加、查询、删除、修改数据时,要遵循的规则;操作实现:对数据的增、删、查、改以及其他特有操作的具体实现方法。线性结构
  • 2024-07-19[FlareOn6]Overlong
    查壳,32位,无壳进IDA一个处理函数,还有一个弹窗,运行一下看看弹窗然后看看加密函数和加密的字符加密函数进去就是处理a3(28)次字符但是点进去402008这个数组发现他的实际长度很长,肯定是远远大于28结合一下returni,发现主函数就是把text[28]变成0,把字符串给截断了,让弹窗只输出
  • 2024-07-10数据结构(Java):集合类LinkedList&集合类Stack
    1、集合类LinkedList1.1什么是LinkedListLinkedList的底层是一个双向链表的结构(故不支持随机访问):在LinkedList中,定义了first和last,分别指向链表的首节点和尾结点。每个节点中有一个成员用来存储数据,还有两个指针域next和prev分别存储下一个节点和上一个节点的地址。Link
  • 2024-07-03ssrf结合python反序列化
    存储session对象时当然不能直接存储对象需要转换成有规律的字符串这一过程就涉及到了序列化将对象转换成字符串这一过程称之为序列化PYTHON反序列化漏洞本文中就涉及到了pickle这一序列化模块导致的反序列化漏洞在反序列化结束时会触发__reduce__魔术方法类似于php中的__
  • 2024-05-29【leetcode——栈的题目】——1003. 检查替换后的词是否有效python
    题目:给你一个字符串 s ,请你判断它是否 有效 。字符串 s 有效 需要满足:假设开始有一个空字符串 t="" ,你可以执行 任意次 下述操作将 t 转换为 s :将字符串 "abc" 插入到 t 中的任意位置。形式上,t 变为 tleft+"abc"+tright,其中 t==tleft+trigh
  • 2024-05-25复习数据结构的第五天(栈)
    上次我们复习了静态链表,它需要系统提前分配一定大小的内存空间,同时它和单链表一样有一个指针(游标)指向下一个节点的数组下标索引。它不具有顺序表随机访问的功能,但它可以像单链表一样插入删除时不需要移动其他元素,只需要改变游标就可以实现。栈的概念栈是一种只能在一端进行插
  • 2024-05-13单调栈的使用
    以leetcode739为例,我们利用单调栈维护一个单调递增数列https://leetcode.cn/problems/daily-temperatures/description/ 通过上述内容,我们一直通过栈顶读取元素,维护数列的单调性。Q:单调栈用于做什么A:求每个元素左(右)侧第一个比他小(大)的元素的位置(具体值)单调栈的维护和操作都
  • 2024-04-26数据结构(笔试题-栈(入栈出栈)
    笔试题:实现//利用栈s1和s2实现队列,栈的思想是“后进先出”,队列的思想是“先进先出”,可以选择把栈s1作为入队缓存,把栈s2作为出队缓存//入队boolenQueue(s1,s2,intx){ inttemp;//用于存储出栈的元素的值 //1.判断栈s1是否已满,此时分为两种情况(满了or未满) if(s
  • 2024-04-25顺序栈————遍历、出栈、入栈
    以数组作为基础实现栈空间(顺序栈)数组在内存中占用一块连续的空间,也就是数组元素的内存地址是连续的。为了实现栈,一般是把数组头作为栈底,数组头部到数组尾部作为栈的增长方向,也就是用户只在数组尾部对数据进行插入和删除。为了方便管理顺序栈所以需要构造管理顺序栈信息的结构体
  • 2024-04-25链式栈————出栈、入栈
    以链表作为基础实现栈空间(链式栈)如果打算实现链式栈,一般是以链表作为基础,一般是把链表头部作为栈顶,方便数据的插入和删除(头插+头删),链式栈相当于是一个单向不循环的链表。链式栈要注意的点:出栈要考虑栈是否为空入栈要考虑栈中是否有数据以下是我的代码:/******************
  • 2024-04-17先进先出算法
    一、意义目的解决多个多个呼叫一个应答问题。如何排队,如何出队。常用于缓存多个请求,保持队列,先进先出。好处是有顺序,但是可以结合实际,比如位置比较近要先出,可以将“先进先出”作为排队出队子算法,再去排序,达到效率最高。二、原理:使用数组改变下标方式存入,出栈把后面变量一个
  • 2024-03-12洛谷题单指南-线性表-P4387 【深基15.习9】验证栈序列
    原题链接:https://www.luogu.com.cn/problem/P4387题意解读:判断一组序列入栈后,出栈序列的合法性。解题思路:数据长度100000,直接模拟堆栈的入栈和出栈即可遍历每一个入栈元素,依次入栈,每一个元素入栈后,比较栈顶元素和出栈序列第一个,如果相等,则出栈,持续进行比较、出栈直到不相等
  • 2024-02-23单调栈算法
     定义栈内元素单调按照递增(递减)顺序排列的栈。主要用于找到每一个元素左边或右边,第一个比它大或小的数时,可使用单调栈算法。时间复杂度由于每个元素最多各自进出栈一次,复杂度是O(n)功能递增单调栈:在一个队列中针对每一个元素从它右边找到第一个比它小的元素在一个
  • 2024-02-19Java集合篇之逐渐被遗忘的Stack,手写一个栈你会吗?
    正月初九,开工大吉!2024年,更上一层楼!写在开头其实在List的继承关系中,除了ArrayList和LinkedList之外,还有另外一个集合类stack(栈),它继承自vector,线程安全,先进后出,随着Java并发编程的发展,它在很多应用场景下被逐渐替代,成为了Java的遗落之类。不过,stack在数据结构中仍有一席之地,因此,
  • 2024-02-05(11/60)有效的括号、删除字符串中所有相邻重复项、逆波兰表达式求值
    有效的括号leetcode:20.有效的括号实现思路遍历到左括号,入栈对应的右括号(方便遍历到右括号时进行对比);遍历到右括号,对比栈顶元素。把无效三种情况照顾到:1.左括号多了(遍历结束后栈不为空);2.左右括号不匹配(右括号时栈顶元素与当前元素对比);3.右括号多了(右括号时栈是空的)。复
  • 2024-01-18栈和相关算法
    栈栈是一种抽象数据结构(ADT),其主要特性是后进先出LIFO(LastinFirstout)实现方式可以用数组、链表实现,本质就是对一个列表进行后进先出的操作操作栈的操作主要有push入栈、pop出栈、isEmpty判空、getTop获取栈顶元素数组实现首先进行最基本的数据结构和操作定义://栈
  • 2024-01-10数据结构之【栈】
    栈和队列是线性表的两个经典特例,它们都是操作受限的线性表,即操作位置需要满足各自的条件,因为这些条件的特殊性,使得实现各自的操作时过程简捷,效率更高。这两个数据结构的应用也非常广泛。栈自助餐厅里的一摞盘子就是常见的栈的例子。在栈中,只能在栈顶位置添加或删除数据项。排队是日
  • 2023-12-14[数据启示录 02] 堆栈
    堆栈(stack)是一种基于后进先出(LIFO,LastInFirstOut)原则的数据结构。它模拟了现实生活中的堆栈,类似于一摞盘子或一堆书。堆栈有两个基本操作:入栈(push)和出栈(pop)。入栈(push):将新元素添加到堆栈的顶部。新元素成为当前堆栈的最上面一个元素。出栈(pop):从堆栈的顶部移除最上面的元素,并返回
  • 2023-12-09[数据启示录 02] 堆栈
    堆栈(stack)是一种基于后进先出(LIFO,LastInFirstOut)原则的数据结构。它模拟了现实生活中的堆栈,类似于一摞盘子或一堆书。堆栈有两个基本操作:入栈(push)和出栈(pop)。入栈(push):将新元素添加到堆栈的顶部。新元素成为当前堆栈的最上面一个元素。出栈(pop):从堆栈的顶部移除最上面的元素,并返回
  • 2023-12-09[数据启示录 02] 堆栈
    堆栈(stack)是一种基于后进先出(LIFO,LastInFirstOut)原则的数据结构。它模拟了现实生活中的堆栈,类似于一摞盘子或一堆书。堆栈有两个基本操作:入栈(push)和出栈(pop)。入栈(push):将新元素添加到堆栈的顶部。新元素成为当前堆栈的最上面一个元素。出栈(pop):从堆栈的顶部移除最上面的元素,并返回
  • 2023-12-08
    最爱考的线性数据结构题型:1.栈的先进后出,队列的先进先出特性。2.出入栈合法性判断,举例:入栈序列为xxx非法的出栈序列是?3.前缀和后缀表达式求值,举例:求前缀表达式+2*45的值。4.链表和数组的增删改查特性。栈栈是一种限定只能在表的一端(栈顶)进行插入和删除操作的线性表