您的位置:首页 > 财经 > 产业 > 试卷页面设计模板_网站设计就业前景分析_小说风云榜_免费域名申请网站大全

试卷页面设计模板_网站设计就业前景分析_小说风云榜_免费域名申请网站大全

2024/11/18 12:31:30 来源:https://blog.csdn.net/2302_81707171/article/details/142622627  浏览:    关键词:试卷页面设计模板_网站设计就业前景分析_小说风云榜_免费域名申请网站大全
试卷页面设计模板_网站设计就业前景分析_小说风云榜_免费域名申请网站大全

Java当中给我们提供了一系列的栈的使用方法,

方法功能
Stack()构造一个空的栈
E push(E e)将e入栈,并返回e
E pop()将栈顶元素出栈并返回
E peek()获取栈顶元素
int size()获取栈中有效元素个数
boolean empty()检测栈是否为空

其中pop()会将栈顶元素取出后删除,但peek()只获取栈顶元素 不会删除

那么我们是否可以将栈给模拟实现呢?
在实现栈的基本操作时,要定义好栈内的成员变量,

1. 栈内成员

public class MyStack {int usedSize;//栈内有效数据个数int[] elme;//栈的底层是用数组实现的,所以用数组来存放栈内成员//给定一个构造方法,初始化栈容量为10public MyStack(int[] elme) {elme= new int [10];}
}

在定义了栈内的成员变量后,我们可以来编写成员方法来实现栈的基本操作了

2. 入栈

 public void push(int data){elme[usedSize]=data;}

3. 出栈

public int pop(){int oldval=elme[usedSize-1];usedSize--;return oldval;}

4. 取栈顶元素

    public int peek(){return elme[usedSize-1];}

5. 栈的扩容

public void ensureCapacity(){if(usedSize==elme.length){elme= Arrays.copyOf(elme,usedSize*2);}}

模拟实现栈后,我们来思考一个问题??
根据
栈的特点 先进后出

我们可以得到栈无论是取栈顶元素还是入栈,时间复杂度都是O(1).
我们思考能否使用链表来实现栈呢??

1.若用单链表实现栈,那么栈的头插,去头节点元素时间复杂度O(1),尾插,取尾节点元素时间复杂度O(n)
2.若使用双向链表实现栈,头插,去头节点元素,尾插,取尾节点元素时间复杂度O(1)

所有在使用链表实现栈时,我们更推荐使用双向链表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com