java实现栈

public class zhan {

	// 创建头节点
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Node hear = new Node(" ");
		Lianbiao l = new Lianbiao(hear);
		Node num1 = new Node("no.1");
		l.add(num1);
		Node num2 = new Node("no.2");
		l.add(num2);
		Node num3 = new Node("no.3");
		l.add(num3);
		Node num4 = new Node("no.4");
		l.add(num4);
		Node num5 = new Node("no.5");
		l.add(num5);
		System.out.print("经过重复添加获得:");
		l.bianli();
		System.out.print("将元素内容no.6添加到后面得:");
		Node num6 = new Node("no.6");
		l.add(num6);
		l.bianli();
		System.out.print("输出元素:" + l.del().getdata() + "栈剩余元素:");
		l.bianli();
		System.out.print("输出元素:" + l.del().getdata() + "栈剩余元素:");
		l.bianli();
		System.out.print("输出元素:" + l.del().getdata() + "栈剩余元素:");
		l.bianli();
		System.out.print("输出元素:" + l.del().getdata() + "栈剩余元素:");
		l.bianli();
		System.out.print("输出元素:" + l.del().getdata() + "栈剩余元素:");
		l.bianli();
		Node num7 = new Node("no.7");
		l.add(num7);
		Node num8 = new Node("no.8");
		l.add(num8);
		Node num9 = new Node("no.9");
		l.add(num9);
		Node num10 = new Node("no.10");
		l.add(num10);
		Node num11 = new Node("no.11");
		l.add(num11);
		System.out.print("经过重复添加,栈内剩余元素:");
		l.bianli();
		System.out.print("将栈内元素全部输出");
		l.shuchu();
	}
}

class Node {
	String data;
	Node next = null;
	Node pre = null;

	Node(String data) {
		this.data = data;
	}

	public String getdata() {
		return data;
	}

	public Node getnext() {
		return next;
	}

	public void setnext(Node next) {
		this.next = next;
	}

	public Node getpre() {
		return pre;

	}

	public void setpre(Node pre) {
		this.pre = pre;
	}
}

class Lianbiao {
	Node hear = null;
	Node tail = null;
	Node prenode = null;
	int a = 0; // 记录栈长度

	Lianbiao(Node hear) {
		this.hear = hear;
		tail = hear;
		prenode = hear;
	}

	public Node gethear() {
		return hear;

	}

	// 链表元素的添加
	public void add(Node node) {
		node.setpre(prenode);
		node.setnext(null);
		prenode.setnext(node);
		prenode = node;
		a++;
	}

	// 元素的输出
	public Node del() {
		Node sc = null;
		Node n = hear;
		int i = a;
		if (a == 0) {
			System.out.print("错误!----栈空!");
		} else {
			while (i > 0) {
				n = n.getnext();
				if (i == 1) {
					prenode=n.getpre();
					n.getpre().setnext(null);
					sc = n;
				}
				i--;
			}
			a--;
		}
		return sc;
	}
	//全部输出
	public void shuchu() {
		Node sc = null;
	
		
		while(a>0){
			Node n = hear;
			int i = a;
			while (i > 0) {	
				n = n.getnext();
				if (i == 1) {
					prenode=n.getpre();
					n.getpre().setnext(null);
					sc = n;
					System.out.print(sc.getdata()+" ");
				}
				i--;
			}
			a--;
		}
	}

	// 遍历输出列表(此方法用于测试,不受规则约束,使用栈时避免使用)
	public void bianli() {
		Node n = hear;
		while (n != null) {
			System.out.print(n.getdata() + " ");
			n = n.getnext();
		}
		System.out.println();
	}

}

*原创作品,转载请表明出处。有建议或者问题欢迎联系我,QQ1595787997

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值