- 01.题目要求
- 02.问题分析
- 03.实例代码
- 04.一次遍历法
- 博客笔记大汇总【15年10月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢!所有博客陆续更新到GitHub上!
- 链接地址:https://github.com/yangchong211/YCBlogs
- 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!
- 用单向链表实现栈
- 栈的pop()方法和push()方法,对应于链表的在头部删除元素deleteHead()以及在头部增加元素addHead()。
public class MyStack {
class Node {// 定义节点
private Node next;
public Object value;
}
Node top = null;
void init() {//初始话头结点
top = new Node();
top.next = null;
top.value = null;
}
public void push(Object element) {//采用头插发的方式模拟入栈
Node e = new Node();
e.value = element;
if (top.next == null) {
top.next = e;
} else {
e.next = top.next;
top.next = e;
}
}
public Object pop() {//弹出栈顶元素,也就是头结点后面的第一个元素
Object ele = null;
if (top.next == null) {
System.out.println("栈为空!");
} else {
ele = top.next.value;
top.next = top.next.next;//移动指针。相当于删除链表中第一个元素
}
return ele;
}
public Object peek()//返回栈顶元素,不执行出栈操作
{
if(top.next==null)
{
return -1;
}
else
return top.next.value;
}
public boolean isempty()//判断栈是否为空
{
return top.next==null?true:false;
}
public int size() {//返回栈的大小,含有的元素个数
Node temp = top;
int i = 0;
while (temp.next != null) {
i++;
temp = temp.next;
}
return i;
}
public void print() {//打印栈中存在的元素
Node temp = top;
if(temp.next==null)
{
System.out.println("栈为空!");
}
while (temp.next != null) {
System.out.print(temp.next.value + " ");
temp = temp.next;
}
}
public static void main(String[] args) {
MyStack stack = new MyStack();
stack.init();
for (int i = 0; i < 5; i++) {
stack.push(i);
}
/*Object ele1 = stack.pop();
Object ele2 = stack.pop();
Object ele3 = stack.pop();
Object ele4 = stack.pop();
Object ele5 = stack.pop();
System.out.println(ele1);
System.out.println(ele2);
System.out.println(ele3);
System.out.println(ele4);
System.out.println(ele5);*/
Object ele1 = stack.pop();
System.out.println("此次弹出的元素为:"+ele1);
System.out.print("栈中剩余的元素为:");
stack.print();
System.out.println();
System.out.println("栈顶元素为:"+stack.peek());
}
}
- github:https://github.com/yangchong211
- 知乎:https://www.zhihu.com/people/yczbj/activities
- 简书:http://www.jianshu.com/u/b7b2c6ed9284
- csdn:http://my.csdn.net/m0_37700275
- 喜马拉雅听书:http://www.ximalaya.com/zhubo/71989305/
- 开源中国:https://my.oschina.net/zbj1618/blog
- 泡在网上的日子:http://www.jcodecraeer.com/member/content_list.php?channelid=1
- 邮箱:[email protected]
- 阿里云博客:https://yq.aliyun.com/users/article?spm=5176.100- 239.headeruserinfo.3.dT4bcV
- segmentfault头条:https://segmentfault.com/u/xiangjianyu/articles
- 掘金:https://juejin.im/user/5939433efe88c2006afa0c6e