顺序栈,链栈

栈与链栈

  • 一,顺序栈
    • 1.1 IStack栈接口
    • 1.2,顺序栈增删改查的实现
    • 1.3,测试顺序栈
  • 二,链栈
    • 2.1,存放数据的结点
    • 2.2,链栈的实现
    • 2.3测试链栈

一,顺序栈

1.1 IStack栈接口

public interface IStack {public void clear();public boolean isEmpty();public int length();public Object peek(); // 返回栈顶元素public void push(Object x); // 入栈public Object pop(); // 将栈顶元素出栈并返回public void display(); // 输出栈中所有元素
}

1.2,顺序栈增删改查的实现

public class SeqStack implements IStack {private Object[] stackElem; // 顺序栈存储空间private int top; // 指向栈顶元素的下一个存储单元位置private int maxSize; // 空间	public SeqStack(int maxSize) {top = 0;this.maxSize = maxSize;stackElem = new Object[maxSize];}// 将栈置空public void clear() {top = 0; }// 判断栈是否为空public boolean isEmpty() {return top == 0;}// 返回栈中元素的个数public int length() {return top;}// 返回栈顶元素public Object peek() {if (!isEmpty())return stackElem[top - 1];return null;}// 入栈 后进public void push(Object x) {if (top == maxSize) {System.out.println("栈已满");return;}stackElem[top] = x;top ++;}@Overridepublic Object pop() {if (!isEmpty()) {top --;return stackElem[top];}return null;}// 输出栈中所有元素public void display() {for (int i = top - 1; i >= 0; i--) {System.out.print(stackElem[i] + " ");			}System.out.println();}}

1.3,测试顺序栈

public class TestSeqStack {public static void main(String[] args) {SeqStack seqStack = new SeqStack(3);seqStack.push("abc");seqStack.push("def");seqStack.push("ghi");// 返回栈顶元素Object peekEle = seqStack.peek();System.out.println("栈顶元素" + peekEle);// 出栈seqStack.pop();System.out.println("出栈后:");// 遍历栈seqStack.display();}}
/**
栈顶元素ghi
出栈后:
def abc */

二,链栈

2.1,存放数据的结点

public class Node {public Object data; // 存放节点数据值public 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;}
}

2.2,链栈的实现

// 实现栈接口
public class LinearStack implements IStack {private Node top; // 栈顶元素@Overridepublic void clear() {// 将栈顶置空top = null;}@Overridepublic boolean isEmpty() {// 栈是否为空return top == null;}@Overridepublic int length() {// 栈的长度Node p = top;int length = 0;while (p != null) {p = p.next;length ++;}return length;}@Overridepublic Object peek() {// 返回栈顶元素if (!isEmpty())return top.data;return null;}@Overridepublic void push(Object x) {// 入栈Node s = new Node(x);s.next = top;top = s;}@Overridepublic Object pop() {// 出栈if (isEmpty()) {return null;}Node p = top;top = top.next; // 栈顶的第二个元素顶替return p.data;}@Overridepublic void display() {Node p = top; // p.next 找下一个元素, 要不然死循环while (p != null) {System.out.print(p.data + "\t");p = p.next;}/*while (top != null) {System.out.print(top.data + "\t");top = top.next;}*/}}

2.3测试链栈

public class TestLinearStack {public static void main(String[] args) {// 测试链栈LinearStack ls = new LinearStack();// 入栈ls.push(1);ls.push(3);ls.push(5);ls.push(7);// 返回栈顶元素System.out.println("栈顶元素:" + ls.peek());// 出栈并返回System.out.println("出栈元素:" + ls.pop());// 遍历栈ls.display();}}/**
栈顶元素:7
出栈元素:7
5	3	1
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu14.04LTS打造实用的环境

1,安装Ubuntu14.04LTS以后,首先要更新一下源,下面使用163源: 首先备份源列表: sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup清空原来的/etc/apt/sources.list,添加网易的源列表 deb http://mirrors.…

用numpy,matplotlib库画笛卡尔爱心曲线

1650年,斯德哥尔摩的街头,52岁的笛卡尔邂逅了18岁的瑞典公主克里斯汀。   那时,落魄、一文不名的笛卡尔过着乞讨的生活,全部的财产只有身上穿的破破烂烂的衣服和随身所带的几本数学书籍。生性清高的笛卡尔从来不开口请求路人施舍…

poj 1715 Hexadecimal Numbers 排列组合

1 /**2 大意: 给定16进制数的16个字母,,求第k大的数,,要求数的长度最大为8.,并且每个数互不相同。3 思路: 从高到低挨个枚举,每一位能组成的排列数 ,拿最高位来说&#x…

centos7虚拟机共享本机磁盘的方法

说明:这个方法不一定是通用的,也可能不是最快捷的,但是感觉比较稳妥的办法。 1,首先坚持两个进程是否启动:右击:我的电脑-管理-服务,检查server服务和Workstation服务是否启动。如果没有启动&a…

文件读写的“二进制模式”和“文本模式”

二进制模式:将内存中的数据(01序列)直接传送到文件中,没有任何转换。如:char ch 0x7d; fwrite(&ch, sizeof(char), 1, pfile);直接把0x7d这个01序列存储到文件中。文本模式:将内存中的数据&#xff08…

服务器小程序servlet的使用

servlet的创建使用一,三种创建方式1.1 实现servlet接口1.2 继承GenericServlet1.3 继承HttpServlet二,servlet使用2.1 web.xml文件的配置2.1.1 创建xml文件2.1.2 手写web.xml文件2.2 在8080端口下访问2.2.1 servlet的生命周期servlet是服务器小程序。是个…

hadoop MultipleInputs fails with ClassCastException (get fileName)

来自:http://stackoverflow.com/questions/11130145/hadoop-multipleinputs-fails-with-classcastexception Following up on my comment, the Javadocs for TaggedInputSplit confirms that you are probably wrongly casting the input split to a FileSplit: /**…

自己常用的Linux命令总结

原则:自己使用过的,不易记忆的,功能强大的 grep 名称意义:全称Global Regular Expression Print,表示全局正则表达式是一个强大的文本搜索工具,采用正则匹配命令格式:grep [options] files O…

XSS与CSRF两种跨站攻击比较

XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态SQL 语句创建应用,于是SQL 注入成了很流行的…

褚时健:现在的年轻人太急了,我快90了还在摸爬滚打

转自:http://news.163.com/17/0715/08/CPCF0D6R00018AOR.html (本人说明:这篇访谈太“鸡汤”了,我读了好几遍,里面精彩的部分我用红字标出来了,感觉褚时健老前辈的精神和做事的态度方法真的值得学习&#…

Java日期格式化SimpleDateFormat

package test;import java.text.SimpleDateFormat; import java.util.Date;public class TestDate {public static void main(String[] args) {// 大写的HH是24小时 小写的是12小时SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d null;…

VS或编译的时候不生成Release文件夹

今天在编译第三方类的时候,总是发布的时候报没有第三方类库的的Release版本 解决方案: Build>Configuration Manager>Release 编译》配置管理》选择发布版本 再编译就有了转载于:https://www.cnblogs.com/flyfish2012/p/3728516.html

el表达式,c标签的使用

el表达式的使用 学生类 public class Student {int id;String name;String sex;String birth;public Student() {}public Student(int id, String name, String sex, String birth) {super();this.id id;this.name name;this.sex sex;this.birth birth;}// el 表达式取实…

conda虚拟环境中安装ipython

问题:今天安装了tensorflow,启动ipython竟然提示如下: In [1]: import tensorflow as tf --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recen…

Web前端行业的了解

即将从事Web前端的工作的 先对即将从事的行业有个了解。 Web前端发展史: 第一个网页诞生于90年代初,早期的网页除了一些小图片和毫无布局可言的标题段落,其全由文字构成。然而随着时代的进步,互联网的 不断发展,接下来…

使用session保持登录状态,cookie保存用户账号密码

session保存登录状态与cookie保存账号密码1. session维持登录状态1.1 代码实现2. cookie保存账号密码2.1 什么是cookie2.2 cookie记住账号密码1. session维持登录状态 利用session的生命周期实现 1.1 代码实现 login页面表单部分 <form action"judgeLoginSession&qu…

用conda安装虚拟的R环境

R语言能不能像python一样创建虚拟环境&#xff0c;今天探索了这个问题&#xff0c;用如下方式。 1、建立一个python虚拟环境 conda create -n R_env python3.7 2、在R_env中安装R语言 conda install R 3、在R_env中安装Rstudio conda install rstudio 4、启动Rstudio成功…