Java数据结构——用链表实现栈
class Link_long{ //链节点类 public long dData; public Link_long next; //链表中下一个节点的引用 public Link_long(long dData) { super(); this.dData = dData; } public void displayLink(){ //显示当前节点的值 System.out.println("dData"+dData); } } class LinkList_long{ private Link_long first; //只需要第一个节点,从第一个节点出发即可定位所有节点 public LinkList_long() { //构造函数 this.first = null; } public boolean isEmpty(){ return (first == null); } public void insertFirst(long dd){ //插入元素是从链表的头开始插入 Link_long newLink = new Link_long(dd); newLink.next = first; first = newLink; } public long deleteFirst(){ //删除temp.dData Link_long temp = first; //暂存first first = first.next; //把next设为first return temp.dData; //返回原来的first } public void displayList(){ System.out.println("List(first-->last):"); Link_long current = first; //用于不断改变位置实现遍历 while(current != null){ current.displayLink(); current = current.next; } } public Link_long find(int key){ //查找指定的关键字 Link_long current = first; while(current.dData != key){ if(current.next == null) return null; else current = current.next; } return current; } public Link_long delete(int key){ //如果current的值匹配,则删除 Link_long current = first; Link_long previous = first; //没有匹配到值 while(current.dData != key){ if(current.next == null) return null; else{ //pre和cur向后移动 previous = current; current = current.next; } } //匹配到值 if(current == first) //只有一个first,并匹配,则把first设成first.next first = first.next; else //current的值匹配,则删除,并把cur的next赋给pre的next previous.next = current.next; return current; } } class LinkStack{ //用链表实现栈,链表从First开始插入,新的元素将变成First,先删除后来元素 private LinkList_long theList; public LinkStack() { //构造函数 theList = new LinkList_long(); } public void push(long j){ //入栈,即在链表的First插入元素 theList.insertFirst(j); } public long pop(){ //出栈,即删除链表的First元素 return theList.deleteFirst(); } public boolean isEmpty(){ //判断栈是否为空,即判断链表是否为空 return (theList.isEmpty()); } public void displayStack(){ System.out.println("Stack(top-->bottom):"); theList.displayList(); } } public class LinkStack_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 LinkStack theStack = new LinkStack(); theStack.push(10); theStack.push(20); theStack.push(30); theStack.displayStack(); theStack.pop(); theStack.pop(); theStack.displayStack(); } }
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/5338930.html