• Java用链表实现栈和队列


    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 

  • 相关阅读:
    pandas中的时间序列基础
    Python中的进程
    Pandas透视表和交叉表
    Pandas分组级运算和转换
    Python中的线程详解
    Pandas聚合
    Python面试题整理
    Pandas分组
    暑假集训 || 动态规划
    DFS || HDU 2181
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5314014.html
Copyright © 2020-2023  润新知