`
tangyanbo
  • 浏览: 262894 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

阅读更多

【栈】
  是限定仅在表尾进行插入或删除操作的线性表
  表尾称为栈顶,表头称为栈底
  特点:后进先出


  操作:
1.推入push
2.弹出pop

 

栈的数组实现

 

 

public class ArrayStack<E> {
	
	private List<E> list = new ArrayList<E>();
	
	public boolean isEmpty(){
		return list.size()==0;
	}
	
	public void push(E element){
		list.add(element);
	}
	
	public void pop(){
		list.remove(list.size()-1);
	}
	
	public E getPop(){
		return list.get(list.size()-1);
	}	
	
	public List<Integer> getElements(){
		List<Integer> result = new ArrayList<Integer>();
		for(E e : list){
			result.add(((Element)e).getValue());
		}
		return result;
	}

}

 

栈的链表实现

 

 

public class LinkedStack<E>{

	private static class Node<E>{

		E element;
		
		Node<E> next;	
		
		public Node(E element){
			this.element = element;
		}

	}
	
	private Node<E> top = new Node<E>(null);
	
	private int size = 0;
	
	public boolean isEmpty() {
		return size == 0;
	}

	public void push(E element){
		Node<E> newNode = new Node<E>(element);
		if(!isEmpty()){
			newNode.next = getPopNode();
			top.next = newNode;
		}else{
			top.next = newNode;
		}
		size++;
	}
	
	public void pop(){
		if(isEmpty()){
			throw new RuntimeException("The stack is empty");
		}
		Node<E> firstNode = top.next;
		top.next = firstNode.next;
		firstNode.next = null;
		size--;
	}
	
	public E getPop(){
		return getPopNode().element;
	}	
	
	private Node<E> getPopNode(){
		if(isEmpty()){
			throw new RuntimeException("The stack is empty");
		}
		return top.next;
	}
	
	public List<Integer> getElements(){
		if(isEmpty()){
			return null;
		}else{
			List<Integer> elements = new ArrayList<Integer>();
			Node<E> node = (Node<E>) top;
			while(node.next!=null){
				node = node.next;
				elements.add(((Element)node.element).getValue());
			}
			return elements;
		}
	}
	
}
 

 

分享到:
评论

相关推荐

    C语言实现栈操作

    假设给定的整数栈 初始状态为空,栈的最大容量为100.从标准输入中输入一组栈操作,按操作顺序输出出栈元素序列。栈操作:1表示入栈操作,后跟一个整数(不为1/0和-1)为入栈元素,0表示出栈操作,-1表示操作结束。从...

    C++栈类模板

    C++栈类模板 template class Stack { public: Stack(void); void Push(const T &item;); //将元素item压入栈 T Pop(void); //将栈顶元素弹出栈 void ClearStack(void); T Peek(void)const; //访问栈顶元素 ...

    栈类模板的设计与实现

    进行栈类模板的设计并实现,栈采用链式存储结构,数据元素可以是char,int,float 等多种数据类型,包括以下功能: 实现初始化栈操作,建立一个空栈; (1)实现清空栈操作; (2)实现判断栈是否为空的操作; (3)实现求栈长度...

    顺序栈的各种基本操作

    编写一个程序,实现顺序栈的各种基本运算,并在基础上完成以下功能: 1)初始化顺序栈; 2)判断顺序栈是否为空; 3)依次进栈元素a,b,c,d,e; 4)判断顺序栈是否为空; 5)输出栈长度; 6)输出从栈顶到栈底的元素; 7)...

    Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    ---------------------------------------------------Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    数据结构实验栈和队列详细实验报告

    (1) 熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现; (2) 熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的...

    栈和队列的应用实验 利用栈实现中缀表达式与前缀表达式的转换

    1、掌握顺序栈的类型定义方法。 2、掌握在顺序栈上实现的六种基本算法。 2、掌握顺序栈的简单应用。 二、 实验内容 1、实现一个栈数据结构。 2、利用栈实现中缀表达式与前缀表达式的转换。 三、相关内容介绍 ...

    数据结构顺序栈验证实验报告.pdf

    数据结构实验报告 顺序栈操作验证(参考) 专业: 学号: 姓名: 一、顺序栈操作验证 1. 实验目的 掌握栈的顺序存储结构; 验证栈的操作特性; 掌握栈的基本操作实现方法。 2. 实验内容 建立含有若干个元素的顺序栈...

    数据结构:栈子系统.docx

    数据结构:栈子系统全文共8页,当前为第1页。数据结构:栈子系统全文共8页,当前为第1页。/* 数据结构:栈子系统全文共8页,当前为第1页。 数据结构:栈子系统全文共8页,当前为第1页。 *题目:设计一个字符型的链栈...

    停车场问题 C 栈与队列

    由于在停车场中间的车辆可以提出离开停车场,而且要求在离开车辆到停车场大门之间的车辆都必须先离开停车场,让此车离去,然后再让这些车辆依原来的次序进入停车场,因此在一个栈和一个队列的基础上,还需要有一个...

    java栈实现计算器中缀表达式

    java数字栈和符号栈模拟计算器(中缀表达式) “计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说...

    创建栈输出栈创建栈输出栈创建栈输出栈

    创建栈输出栈创建栈输出栈创建栈输出栈创建栈输出栈

    顺序栈的C语言实现(栈的顺序存储)

    栈是一种特殊的线性表,它只能在线性表的一端进行插入删除操作,允许插入删除的一端称为栈顶,另一端称为栈底。栈的顺序存储即顺序栈是指,用一块连续的内存来存放一个栈,类似于数组,各元素在内存中是一个挨一个的...

    数据结构栈和队列

    1、理解栈的逻辑结构定义及特点、掌握栈的存储结构的描述、 实现栈的基本运算。 2、理解队列的逻辑结构定义及特点、掌握循环队列存储结构及其描述方法、掌握循环队列的基本运算。 二、实验内容: 1、建立顺序栈,并...

    商店货架管理栈的操作

    商店货架以栈的形式摆放商品,生产日期越近的越靠近栈底,出栈是从栈顶取货,一天营业结束,如果货架不满,则需上货,如果直接将商品摆放到货架上,则会使生产日期越近的越靠近栈顶.这就需要倒货架,仍使生产日期越近...

    栈和队列的基本操作实现及其应用实验报告

    栈和队列的基本操作实验报告 一、实验目的 1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 2、会用栈和队列解决简单的实际问题。 二、实验内容 题目:试写一个算法,判断依次读入的一个以@为结束符的...

    数据结构中栈和队列思想的停车场管理系统

    基于c语言数据结构中栈和队列思想的简单停车场管理系统,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车...

    IT项目管理技术栈.xmind

    IT项目管理技术栈.xmindIT项目管理技术栈.xmindIT项目管理技术栈.xmindIT项目管理技术栈.xmindIT项目管理技术栈.xmindIT项目管理技术栈.xmindIT项目管理技术栈.xmindIT项目管理技术栈.xmindIT项目管理技术栈.xmindIT...

    顺序栈相关算法

    1、 定义顺序栈类。 2、 实现如下算法: 1)创建顺序栈; 2)插入操作:向栈顶压入值为 x 的元素; 3)删除操作:弹出栈顶元素,将数据输出在屏幕上; 4)存取操作:读取栈顶元素,将数据输出在屏幕上;。 3、 为了...

    栈的C语言实现

    C语言 栈 顺序栈 数据结构

Global site tag (gtag.js) - Google Analytics