在堆栈中,push为入栈操作,pop为出栈操作

LinkedList提供以下方法:(ArrayList无此类方法)

addFirst();

removeFirst();

addLast();

removeLast();

在堆栈中,push为入栈操作,pop为出栈操作。

Push用addFirst();pop用removeFirst(),实现后进先出。

用isEmpty()--其父类的方法,来判断栈是否为空。

在队列中,put为入队列操作,get为出队列操作。

Put用addFirst(),get用removeLast()实现队列。

 1 package TomTexts;
 2
 3 public class TomTexts_11 {
 4     public static void main(String[] args)
 5     {
 6     String s1="Javav";
 7     char c=s1.charAt(2);
 8     System.out.println("c="+c);
 9     int i=s1.indexOf(‘a‘);
10     System.out.println("fistchar="+i);
11     int j=s1.lastIndexOf(‘a‘);
12     System.out.println("lastchar="+j);
13     i= s1.indexOf("av");
14     System.out.println("fiststring="+i);
15     j=s1.lastIndexOf("av");
16     System.out.println("laststring="+j);
17     }
18 }

原文地址:https://www.cnblogs.com/borter/p/9420345.html

时间: 2024-11-14 21:41:49

在堆栈中,push为入栈操作,pop为出栈操作的相关文章

给定入栈顺序,判断出栈顺序是否合法

题目描述:给定一个入栈序列,给定一个出栈序列,判断该出栈序列是否合法. 分析:假如入栈序列为1 2 3 4 5,判断4 5 3 2 1 是否是合法的出栈顺序. 两个序列均以数组的形式给出 从两个数组的第一个元素开始,如果栈为空,或者,栈顶元素不等于当前出栈数组当前下标对应的元素时,将当前入栈数组中下标所指向的元素进行压栈 初始状态如下: 步骤1:把 1 进行压栈,并将下标后移,如下图所示, 步骤2:依次进行判断并压栈,当4进栈后,此时栈顶元素等于出栈数组下标所指向的元素,将4出栈,如下图所示 步

给定入栈顺序,判断出栈顺序是否正确。

1 var ins = [1, 2, 3, 4, 5]; 2 var outs = [3, 4, 5, 2, 1]; 3 var temp = ins; 4 var num, i = 0, len; 5 6 /** 7 * ins 入栈顺序 8 * outs 出栈顺序 9 * temp 临时数组,保存入栈顺序 10 * num 是临时数组中 当前出栈节点的下标 11 * len 临时数组的长度-1 12 * 13 */ 14 (function (temp, outs) { 15 if(ins

实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)

具体实现如下: #include<iostream> #include<stack> #include<string> #include<assert.h> using namespace std; template<class T> class Stack { public: void Push(const T& x); void Pop(); T& Min(); void PrintS(); private: stack<

n个元素的入栈顺序有多少种出栈顺序?

问题:w1.w2.w3.w4.w5,5个元素将会按顺序入栈,求出栈顺序有多少种情况. 先写一下结论方便记忆: 1个元素:1种 2个元素:2种 3个元素:5种 4个元素:14种 5个元素:42种 简单的分析过程如下: n个数据依次入栈,出栈顺序种数的递推公式如下:F(n)=∑(F(n-1-k)*Fk);其中k从0到n-1 已知F0=1,F1=F0*F0=1F2=F1*F0+F0*F1=2F3=F2*F0+F1*F1+F0*F2=5F4=F3*F0+F2*F1+F1*F2+F0*F3=14F5=F4

顺序栈的进栈,出栈

1 #include<stdio.h> 2 #include<stdlib.h> 3 #define MAX 100 4 5 typedef struct 6 { 7 char c[MAX]; 8 int top; 9 }*seqstack; 10 11 void InitStack(seqstack s);//建立一个空栈 12 int push(seqstack s,char a);//进栈 13 int pop(seqstack s,char *a);//出栈 14 15 i

javap 命令查看堆栈中信息

javap命令是对.java文件进行反编译,通过这个命令可以看到堆栈中是怎么压栈和出栈的已经执行顺序,这里简单解释下javap的简单的使用,下面举个例子: 题目:i++ 和++i的区别 解释:简单点说 这个问题都不难回答,这里就不说了,但是实际上堆栈中区别也是老大了(这里就用到了javap命令), 步骤: 1.在任意一个盘下面建一个名为Test.java的文件(文件名可以随意命名)代码如下: public class Test { public static void main(String[]

栈的链式存储结构和入栈出栈操作

参考<大话数据结构>P98~99——栈的链式存储结构. 进栈: 出栈: 举个简单的例子: 代码和解释如下(VS2012测试通过): 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 typedef string status;//用书上推荐的status返回是否成功,C++中的模板类string比字符数组char[]更方便 6 7 //栈的结点 8 //包含data,和指向下一个结点

两栈共享空间的存储结构和入栈出栈操作

参考<大话数据结构>P95~96——两栈共享存储空间. 当两个栈的需求空间有相反关系时,也就是一个栈增长时,另一个栈在缩短,可以采用两栈共享空间结构.这是针对两个具有相同数据类型的栈的一个设计技巧. 举个简单的例子: 代码和解释如下(VS2012测试通过): 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 #define MAXSIZE 6 //本例中栈满共6个元素 6 typed

C语言数据结构链栈(创建、入栈、出栈、取栈顶元素、遍历链栈中的元素)

/**创建链栈*创建一个top指针代表head指针*采用链式存储结构*采用头插法创建链表*操作 创建 出栈 入栈 取栈顶元素*创建数据域的结构体*创建数据域的名称指针*使用随机函数对数据域的编号进行赋值*/ #include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define OK 1#define ERROR 0#define NAMESIZE 255//字符串的最大长度