用链表实现栈

1.先创建一个结点类:

public class Link {


//节点数据
private long data;
//下一结点
private Link next;

public Link(long d){
this.data = d;
}
//显示结点数据
public void displayLink(){
System.out.println(data + " ");
}


public long getData() {
return data;
}


public void setData(long data) {
this.data = data;
}


public Link getNext() {
return next;
}


public void setNext(Link next) {
this.next = next;
}


}


2.创建链表

public class LinkList {


//第一个结点
private Link first;
//构造方法
public LinkList(){
first = null;
}

/**
* 判断链表是否为空
* @return
*/
public boolean isEmpty(){
return (first == null);
}

/**
* 插入数据
* @param d
*/
public void insertFirst(long d){
Link newLink = new Link(d);
newLink.setData(d);
newLink.setNext(first);
first = newLink;
}

/**
* 删除数据
* @return
*/
public long deleteFirst(){
Link temp = first;
first = first.getNext();
return temp.getData();
}

/**
* 显示链表数据
*/
public void displayList(){
Link current = first;
while(current != null){
current.displayLink();
current = current.getNext();
}
System.out.println(" ");
}
}


3.用链表实现栈

public class LinkStack {
//链表
private LinkList linkList;

public LinkStack(){
//实例化一个链表
linkList = new LinkList();
}


/**
* 添加数据
* @param dd
*/
public void push(long dd){
linkList.insertFirst(dd);
}

/**
* 弹出数据
* @return
*/
public long pop(){
return linkList.deleteFirst();
}
/**
* 显示栈内容
*/
public void displayStack(){
System.out.println("top-->bottom");
linkList.displayList();
}
}


应用:用创建的栈存取数据

public class LinkStackApp {
public static void main(String[] args) {
LinkStack linkStack = new LinkStack();
linkStack.push(20);
linkStack.push(15);

linkStack.displayStack();

linkStack.push(16);
linkStack.push(30);
linkStack.push(40);
linkStack.push(28);

linkStack.displayStack();


linkStack.pop();
linkStack.pop();

linkStack.displayStack();
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值