首页 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
资讯 业界资讯 软件杂谈 编程开发 网站建设 网络观查 搜索引擎 移动应用 网站运营 网络地图
开发 移动开发 Web前端 架构设计 编程语言 互联网 数据库 系统运维 云计算 开发杂谈
[编程语言] 数据结构Java实现——栈
数据结构Java实现——栈

写在前面



转眼数据结构这本书就学完了,但是一直学习的是C版的,感觉很不爽,就借了本Java版的自学了点,感觉还不错, 特此共享。此处是栈。


文字描述





首先,所谓栈,就是一个先进后出的一个线性表。其功能类似于一个水杯,如图





只能从一端添加,而且也只能在该端删除,对每一个元素而已,先进后出



代码描述





1.栈的抽象接口


package org.Stone6762.MStack;
/**
 * @author_Stone6762
 * @Description_栈功能的抽象接口
 */
public interface MStack {

	/** 
	 * @Describe_将栈清空
	 */
	public void clear();

	/** 
	 * @Describe_判断栈是否为空
	 * @return
	 */
	public boolean isEmpty();

	/** 
	 * @Describe_求栈的长度
	 * @return
	 */
	public int length();

	/** 
	 * @Describe_返回栈顶元素
	 * @return
	 */
	public Object peek();

	/** 
	 * @Describe_入栈
	 * @param data
	 * @throws Exception
	 */
	public void push(Object data) throws Exception;

	/** 
	 * @Describe_出站
	 * @return
	 */
	public Object pop();

}

2.栈的顺序存储


package org.Stone6762.MStack.imple;

import org.Stone6762.MStack.MStack;

/**
 * @author_Stone6762
 * @Description_
 */
public class SqStack implements MStack {

	private Object[] stackElem;// ---存储栈中的数据
	private int top;// ----栈顶元素

	public SqStack(int maxSize) {
		top = 0;
		stackElem = new Object[maxSize];
	}

	@Override
	public void clear() {
		this.top = 0;
	}

	@Override
	public boolean isEmpty() {
		return this.top==0;
	}

	@Override
	public int length() {
		return this.top;
	}

	@Override
	public Object peek() {
		if(!isEmpty()){
			return stackElem[top-1];
		}
		return null;
	}

	@Override
	public void push(Object object) throws Exception {
		if(top==stackElem.length){
			throw new Exception("栈已满    ");
		}else{
			this.stackElem[top]=object;
			top++;			
		}
	}

	@Override
	public Object pop() {
		if(!isEmpty()){
			return stackElem[--top];
		}
		return null;
	}

	public void display(){
		for (int i = top-1; i >=0; i--) {
			System.out.print(stackElem[i].toString()+"  ");
		}
	}
	
}

3.链栈




3.1结点类的描述


package org.Stone6762.entity;

/**
 * @author_Stone6762
 * @Description_
 */
public class Node {

	/**@data每一个结点内部存储的数据
	 */
	private Object data;

	/**@next指向下一个结点
	 */
	private Node next;

	public Node() {
		this(null, null);
	}

	public Node(Object data) {
		this(data, null);
	}

	public Node(Object data, Node next) {
		this.data = data;
		this.next = next;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	public Node getNext() {
		return next;
	}

	public void setNext(Node next) {
		this.next = next;
	}

}

3.2链栈的描述




package org.Stone6762.MStack.imple;

import org.Stone6762.MStack.MStack;
import org.Stone6762.entity.Node;

/**
 * @author_Stone6762
 * @Description_
 */
public class LinkStack implements MStack {

	/**
	 * @top指向栈顶元素
	 */
	private Node top;

	@Override
	public void clear() {
		this.top = null;
	}

	@Override
	public boolean isEmpty() {
		return this.top == null;
	}

	@Override
	public int length() {
		Node p = this.top;
		int length = 0;
		while (p != null) {
			length++;
			p = p.getNext();
		}
		return length;
	}

	@Override
	public Object peek() {
		if (!isEmpty()) {
			return this.top.getData();
		} else {
			return null;
		}
	}

	@Override
	public void push(Object data) throws Exception {
		/*
		 * 先创建一个新的结点,将数据填入到新的结点中,然后将新结点的指针指向栈顶结点 最后,让栈顶指针指向新结点即可
		 */

		Node p = new Node(data);
		p.setNext(top);
		top = p;
	}

	@Override
	public Object pop() {
		if (isEmpty()) {
			return null;
		} else {
			Node p = this.top;
			top = top.getNext();
			return p.getData();
		}
	}

	/**
	 * @Describe_输出栈中的所有元素_由栈顶到栈底
	 */
	public void display() {
		Node p = this.top;
		while (p != null) {
			System.out.println(p.getData().toString() + "    ");
			p = p.getNext();
		}
	}

}











 此文从网络中自动搜索生成,不代表本网站赞成被搜索网站的内容或立场    查看原文
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年10日历
2018-10-22 0:59:23
 
  网站联系 软件世界网-www.sjsjw.com ©2014 蜀ICP备06016416号 三峰网旗下网站