• Java数据结构——用链表实现栈


    //=================================================
    // File Name       :	LinkStack_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    //类名:Link_long
    //属性:
    //方法:
    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);
    	}
    	
    }
    
    //类名:LinkList_long
    //属性:
    //方法:
    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;
    	}
    }
    
    //类名:LinkList_long
    //属性:
    //方法:
    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();
    	}
    	
    }
    
    
    //主类
    //Function        : 	LinkStack_demo
    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();
    	}
    
    }
    
  • 相关阅读:
    Java连接Mysql数据库异常:Public Key Retrieval is not allowed
    java8的时间段比较处理工具类TimeUtils
    MAVEN最常用的远程仓库
    maven的settings.xml配置阿里云中央仓库
    idea如何将java程序打包成exe可执行文件
    FakerUtil
    Golang内存逃逸是什么?怎么避免内存逃逸?
    10个高效Linux技巧及Vim命令对比[转]
    进程间8种通信方式详解
    基于openresty的URL 断路器/熔断器 -- URL-fuse
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5338930.html
Copyright © 2020-2023  润新知