链表实现stack和queue,java实现(ADT思想)
2014-04-20 15:32
369 查看
第一部分:
链表实现Stack
第二部分:
链表实现Queue
链表实现Stack
package com.liu.Link; //栈处理类 public class LinkStack3 { private LinkList3 theList; //构造函数防止空指针异常错误 public LinkStack3() { theList = new LinkList3(); } public void push(long d) { theList.insertFirst(d); } public long pop() { return theList.deleteFirst(); } public boolean isEmpty() { return theList.isEmpty(); } public void display() { System.out.print("Stack (top-->bottom):"); theList.displayStack(); } } class LinkStackApp { public static void main(String[] args) { LinkStack3 theStack = new LinkStack3(); theStack.push(1111); theStack.push(40); theStack.display(); theStack.push(60); theStack.push(80); theStack.display(); theStack.pop(); theStack.pop(); theStack.display(); } } //链表处理类 class LinkList3 { private Link3 first; public LinkList3() { first = null; } public boolean isEmpty() { return (first == null); } public void insertFirst(long dd) { Link3 newLink = new Link3(dd); newLink.next = first; first = newLink; } public long deleteFirst() { Link3 temp = first; first = first.next; return temp.dData; } public void displayStack() { Link3 current = first; while(current!=null) { //System.out.print(current.dData+" "); current.displayLink(); current = current.next; } System.out.println(""); } } //数据类型类 class Link3 { public long dData; public Link3 next; public Link3(long dd) { dData = dd; } public void displayLink() { System.out.print(dData+" "); } }
第二部分:
链表实现Queue
package com.liu.Link; class LinkQueueApp { public static void main(String[] args) { LinkQueue theQueue = new LinkQueue(); theQueue.insert(10); theQueue.insert(20); theQueue.displayQueue(); theQueue.insert(30); theQueue.insert(40); theQueue.insert(50); theQueue.displayQueue(); theQueue.remove(); theQueue.remove(); theQueue.displayQueue(); } } public class LinkQueue { private LinkList4 theList; public LinkQueue() { theList = new LinkList4(); } public boolean isEmpty() { return theList.isEmpty(); } public void insert(long d) { theList.insertLast(d); } public long remove() { return theList.deleteFirst(); } public void displayQueue() { System.out.print("Queue (front-->rear):"); theList.displayList(); } } class LinkList4 { private Link4 first; private Link4 last; public LinkList4() { first = null; last = null; } public boolean isEmpty() { return first == null; } public void insertLast(long d) { Link4 newLink = new Link4(d); if(isEmpty()) first = newLink; else last.next = newLink; last = newLink; } public long deleteFirst() { long temp = first.dData; //这种情况为只有一个元素的情况,要注意尾指针的位置 if(first.next == null) { last = null; } first = first.next; return temp; } public void displayList() { Link4 current = first; while(current!=null) { current.displayLink(); current = current.next; } System.out.println(""); } } //链表类 class Link4 { public long dData; public Link4 next; public Link4(long d) { dData = d; } public void displayLink() { System.out.print(dData+" "); } }
相关文章推荐
- Java 集合的简单实现 (ArrayList & LinkedList & Queue & Stack)
- java链表实现Stack以及后缀表达式的实现
- 【老鸟学算法】二元查找树转变成排序的双向链表——算法思想及java实现
- 用两个stack实现Queue(java)
- 算法Sedgewick第四版-第1章基础-011一用链表实现bag、queue、stack
- 基于链表实现Java 自定义Queue队列
- 数据结构之stack,queue的数组与链表实现
- java数据结构之LinkedQueue(用链表实现的双端单向队列)
- Java数据结构----栈(Stack)源码分析和用链表简单实现
- Stack和Queue:后进先出和先进先出和Java 实现后进先出(LIFO)及Stac和Java集合类: Set、List、Map、Queue使用场景梳理 - .Little Hann
- 用Java实现栈(Stack)之链表实现
- java 实现单链表节点的复制
- 【第五节】Java代码实现链表
- java数组实现买彩票(通过标识符进行判断的思想)
- 约瑟夫环问题(丢手帕游戏)Java 链表实现
- 反转链表(Java实现)
- 单链表逆置的完整实现 java版
- 反转链表_Java实现
- java中break,continue,标签实现goto效果(编程思想)
- 链表的逆转 -- java实现