一、抽象数据结构说明:
1. 栈、队列和优先级队列是比数组和其他数据结构更为抽象的结构。它们主要是作为构思算法的辅助工具,而不是完全的数据存储工具。这些数据结构的生命周期比那些数据库类型的结构要短得多。在程序执行期间它们才被创建,通常用他们去执行某项特殊的任务;当完成任务之后他们就被销毁。
2. 此外,它们的访问时受限制的,即在特定的时刻只有一个数据项可以被读取或者被删除。访问其他数据项,理论上是不允许的。栈只允许访问一个数据项,即最后插入的数据项。移除这个数据项后,才能访问倒数第二个插入的数据项,依次类推。
3. 栈的应用非常的广泛:检验源代码中括号的匹配问题、解析表达式、遍历树的节点和查找图的节点等等。
4. 理论上说,ADT定义的栈是不会满的,但是数组实现的栈会满,我们这里用数组来模拟一下栈。
二、Java语言模拟栈:
package com.solid.stack;
public class StackX {
//数组
private long[] stackArray;
//栈顶
int top;
//最大容量
int maxSize;
/**
* 构造方法
* @param maxSize
*/
public StackX(int maxSize) {
this.maxSize = maxSize;
stackArray = new long[maxSize];
top = -1;
}
/**
* 入栈操作
* @param value
*/
public void push(long value) {
stackArray[++top] = value;
}
/**
* 出栈操作
* @return
*/
public long pop() {
return stackArray[top--];
}
/**
* 判断是否为空栈
* @return
*/
public boolean isEmpty() {
return (top == -1);
}
/**
* 读取栈顶元素
* @return
*/
public long peek() {
return stackArray[top];
}
/**
* 判断是否满
* @return
*/
public boolean isFull() {
return (top == maxSize-1);
}
}
分享到:
相关推荐
数据结构栈的实现数据结构栈的实现数据结构栈的实现数据结构栈的实现数据结构栈的实现
第2章至第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;第8章综合介绍操作系统和编译程序中涉及的动态存储管理的基本技术;第9章至第11章...
数据结构与算法(3)–栈抽象数据类型及Python实现 1. 什么是栈? 是一种有次序的数据项集合,在栈中数据项的加入和移除都发生在同一端。一端叫做栈顶,另一端叫做栈底。 1.1. 特点 距离在栈底比较近的数据项,待的...
数据结构栈的c语言实现实例程序,供大家学习用。 关于栈的抽象数据类型,初始化,入栈,出栈,清空栈等操作!
包含JWArray和JWList,分别包含顺序结构及链式结构的线性表、栈和队列操作,函数使用方便简单,可以作为简单的C语言线性表、栈和队列操作库。
根据栈和队列的抽象数据类型的定义,按要求实现一个栈或一个队列。 要求: 1、 实现一个共享栈 2、 实现一个链栈 3、 实现一个循环队列 4、 实现一个链队列
数据结构学位复习课-上海交通大学 复习课(1) 主要内容: 1.第一部分 基本概念 2.第二部分 线性表、栈、队列 第一部分:数据结构与算法的基本概念 考核内容: 算法、算法正确性、复杂性; 算法的时间与空间复杂性...
本书内容为数据结构讲义。 1、0、0 绪论 1、1、0 什么是数据结构 1、2、0 基本概念和术语 ...3、1、1 抽象数据类型栈的定义 3、1、2 栈的表示和实现 3、2、0 栈的应用举例 3、2、1 数制转换 3、2、2 括号匹配的检验
第二章 ~ 第七章 基本数据结构 从抽象数据类型的角度, 分别讨论线性表、栈和队列、串、数组和广义表、 树、图等基本数据结构及其应用。 第八章 动态存储管理 介绍操作系统和编译程序中涉及的 动态存储管理的...
408数据结构 第1章 绪论 1.1 数据结构的基本概念 数据元是数据的基本单位,⼀个数据元素可由若⼲个数据项完成,数据项是构成数据元素的不可分割的最⼩单位。例如,学⽣记录就是⼀个 数据元素,它由学号、姓名、性别...
第2~4章以抽象数据类型为主线索,围绕常用的基本数据结构,分别介绍基于序列的常用数据结构表、栈、队列;第5章介绍递归以及递归在数据结构和算法设计中的应用;第6章介绍实际应用中常用的排序与选择算法;第7~12...
数据结构与算法课程内容包括数据结构与抽象数据类型、算法特性及分类、算法效率与度量、线性结构、顺序表、链表、栈与队列、栈与递归、递归转非递归、字符串的存储结构、字符串运算的算法实现、字符串的快速模式匹配...
《数据结构(C++版)》介绍了学习数据结构所用到的预备知识,叙述了数据结构、算法以及抽象数据类型的概念,介绍了线性表、栈、队列和串、数组和广义表,树和二叉树、图等常用数据结构,讨论了常用的查找、排序和索引技术,...
包含数据结构中的所有内容,线形表,队列,栈,树以及图(Dijkstra算法等)等,并包含有排序查找等
第2章至第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;第9章和第10章分别讨论查找表和排序,除了介绍各种实现方法之外,并着重从时间上...
《数据结构(C++版)(第2版)》介绍了数据结构、算法以及抽象数据类型的概念,介绍了线性表、栈、队列和串、数组、树和二叉树、图等常用数据结构,讨论了常用的查找、排序和索引技术,给出了较多的数据结构的应用...
第2章至第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;第8章综合介绍操作系统和编译程序中涉及的动态存储管理的基本技术;第9章至第11章...
一、基本概念和术语 (一)数据元素、数据结构、抽象数据类型等概念 (二)算法设计的基本要求 (三)算法的时间和空间复杂度的分析与表示方法 二、线性表 (一)线性表的定义和基本操作 (二)线性表的实现 1....
(一)数据元素、数据结构、抽象数据类型等概念 (二)算法设计的基本要求 (三)语句的频度和估算时间复杂度 二、线性表 (一)线性表的定义和基本操作 (二)线性表的实现 1.顺序存储结构 2.链式存储结构 3.线性表的应用 三...
1.1.3 数据结构和抽象数据类型(ADT) 1.2 算法描述与分析 1.2.1 什么是算法 1.2.2 算法描述工具——C语言 1.2.3 算法分析技术初步 习题一 第2章 线性表 2.1 线性表的定义及其运算 2.1.1 线性表的定义 ...