码迷,mamicode.com
首页 > 编程语言 > 详细

Java用链表实现栈和队列

时间:2015-06-24 09:23:01      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:   队列   

1、用链表实现栈

package stack;
/**
 * 
 * @author denghb
 *
 */
class Link {
	public long dData;
	public Link next;
	public Link(long dd) {
		dData = dd;
	}
	public void displayLink() {
		System.out.print(dData + " ");
	}
}

class LinkList {
	private Link first;
    public LinkList() {
    	first = null;
    }
    public boolean isEmpty() {
    	return (first == null);
    }
    public void insertFirst(long dd) {
    	Link newLink = new Link(dd);
    	newLink.next = first;
    	first = newLink;
    }
    public long deleteFirst() {
    	//假设这是一个非空链表
    	Link temp = first;
    	first = first.next;
    	return temp.dData;
    }
    public void displayList() {
    	Link current = first;
    	while(current != null) {
    		current.displayLink();
    		current = current.next;
    	}
    	System.out.println("");
    }
}

class LinkStack {
	private LinkList theList;
	public LinkStack() {
		theList = new LinkList();
	}
	public void push(long j) {
		theList.insertFirst(j);
	}
	public long pop() {
		return theList.deleteFirst();
	}
	public boolean isEmpty() {
		return (theList.isEmpty());
	}
	public void displayStack() {
		System.out.print("Stack (top-->bottom): ");
		theList.displayList();
	}
}
public class LinkStackApp {
	public static void main(String[] args) {
		LinkStack theStack = new LinkStack();
		theStack.push(20);
		theStack.push(40);
		
		theStack.displayStack();
		
		theStack.push(60);
		theStack.push(80);
		
		theStack.displayStack();
		
		theStack.pop();
		theStack.pop();
		
		theStack.displayStack();
	}
}

2、用链表实现队列

package queue;
/**
 * 
 * @author denghb
 *
 */
class Link {
	public long dData;
	public Link next;
	public Link(long dd) {
		dData = dd;
	}
	public void displayLink() {
		System.out.print(dData + " ");
	}
}

class FirstLastList {
	private Link first;
	private Link last;
	
    public FirstLastList() {
    	first = null;
    	last = null;
    }
    public boolean isEmpty() {
    	return (first == null);
    }
    public void insertLast(long dd) {
    	Link newLink = new Link(dd);
    	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() {
    	Link current = first;
    	while(current != null) {
    		current.displayLink();
    		current = current.next;
    	}
    	System.out.println("");
    }
}

class LinkQueue {
	private FirstLastList theList;
	public LinkQueue() {
		theList = new FirstLastList();
	}
	public void insert(long j) {
		theList.insertLast(j);
	}
	public long remove() {
		return theList.deleteFirst();
	}
	public boolean isEmpty() {
		return (theList.isEmpty());
	}
	public void displayStack() {
		System.out.print("Stack (top-->bottom): ");
		theList.displayList();
	}
}

public class LinkQueueApp {
	public static void main(String[] args) {
		LinkQueue theQueue = new LinkQueue();
		theQueue.insert(20);
		theQueue.insert(40);
		
		theQueue.displayStack();
		
		theQueue.insert(60);
		theQueue.insert(80);
		
		theQueue.displayStack();
		
		theQueue.remove();
		theQueue.remove();
		theQueue.displayStack();
	}
}

第一个源程序的输出结果:

Stack (top-->bottom): 40 20 
Stack (top-->bottom): 80 60 40 20 
Stack (top-->bottom): 40 20 

第二个源程序的输出结果:

Stack (top-->bottom): 20 40 
Stack (top-->bottom): 20 40 60 80 
Stack (top-->bottom): 60 80 

Java用链表实现栈和队列

标签:   队列   

原文地址:http://blog.csdn.net/victor_cindy1/article/details/46617535

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!