当前位置: 首页 > news >正文

网站建设 dw网页加速器手机版

网站建设 dw,网页加速器手机版,北京装饰公司排行 2019,wordpress商城模版目录 一、概述 二、基于链表的栈的实现 接口 链表接口实现类 测试类 ​编辑 三、基于数组的栈的实现 接口 数组接口实现类 测试类 妈妈,生日快乐,希望你健康快乐没有烦恼也不会有病痛 —— 24.9.28 一、概述 计算机科学中,stack是一种线性的…

目录

一、概述

二、基于链表的栈的实现

接口

链表接口实现类

测试类

​编辑

三、基于数组的栈的实现

接口

数组接口实现类

测试类


妈妈,生日快乐,希望你健康快乐没有烦恼也不会有病痛

                                                                                —— 24.9.28

一、概述

计算机科学中,stack是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为栈顶,另一端不能操作数据的称之为栈底,就如同生活中的一摞书

二、基于链表的栈的实现

接口

public interface Stack<E> {/*向栈顶压入元素Params:value-待压入值Returns:压入成功返回true,否则返回false*/boolean push(E vale);/*从栈顶弹出元素Returns:栈非空返回栈顶元素,栈为空返回null*/E pop();/*返回栈顶元素,不弹出Returns:栈非空返回栈顶元素,栈为空返回null*/E peek();/*判断栈是否为空Returns:空返回true,非空返回false*/boolean isEmpty();/*判断栈是否为满Returns:满返回true,空返回false*/boolean isFull();
}

链表接口实现类

import java.util.Iterator;public class LinkedListStack<E> implements Stack<E>,Iterable<E> {// 容量private int capacity;// 元素个数private int size;// 头指针private Node<E> top = new Node<>(null,null);public LinkedListStack(int capacity) {this.capacity = capacity;}/*向栈顶压入元素Params:value-待压入值Returns:压入成功返回true,否则返回false*/@Overridepublic boolean push(E value) {if (isFull()){return false;}Node<E> node = new Node<>(value, top.next);top.next = node;size++;return true;}/*从栈顶弹出元素Returns:栈非空返回栈顶元素,栈为空返回null*/@Overridepublic E pop() {if (isEmpty()) {return null;}Node<E> next = top.next;top.next = top.next.next;size--;return next.value;}/*返回栈顶元素,不弹出Returns:栈非空返回栈顶元素,栈为空返回null*/@Overridepublic E peek() {if (isEmpty()) {return null;}Node<E> next = top.next;return next.value;}/*判断栈是否为空Returns:空返回true,非空返回false*/@Overridepublic boolean isEmpty() {return top.next == null;}/*判断栈是否为满Returns:满返回true,空返回false*/@Overridepublic boolean isFull() {boolean b = size == capacity;return b;}@Overridepublic Iterator<E> iterator() {return new Iterator<E>() {Node<E> next = top.next;@Overridepublic boolean hasNext() {return next != null;}@Overridepublic E next() {E value = next.value;next = next.next;return value;}};}// 单项链表实现栈static class Node<E> {E value;Node<E> next;public Node(E value, Node<E> next) {this.value = value;this.next = next;}}
}

测试类

import org.junit.Test;import java.util.List;import static org.junit.jupiter.api.Assertions.*;
public class TestLinkedListStack {@Testpublic void push() {LinkedListStack<Object> stack = new LinkedListStack<>(3);stack.push(1);stack.push(2);stack.push(3);assertFalse(stack.push(4));assertIterableEquals(List.of(3,2,1),stack);}@Testpublic void pop() {LinkedListStack<Object> stack = new LinkedListStack<>(3);stack.push(1);stack.push(2);stack.push(3);assertEquals(3,stack.pop());assertEquals(2,stack.pop());assertEquals(1,stack.pop());assertNull(stack.pop());System.out.println(stack.isEmpty());}
}

三、基于数组的栈的实现

接口

public interface Stack<E> {/*向栈顶压入元素Params:value-待压入值Returns:压入成功返回true,否则返回false*/boolean push(E vale);/*从栈顶弹出元素Returns:栈非空返回栈顶元素,栈为空返回null*/E pop();/*返回栈顶元素,不弹出Returns:栈非空返回栈顶元素,栈为空返回null*/E peek();/*判断栈是否为空Returns:空返回true,非空返回false*/boolean isEmpty();/*判断栈是否为满Returns:满返回true,空返回false*/boolean isFull();
}

数组接口实现类

import java.util.Iterator;public class ArrayStack<E> implements Stack<E>,Iterable<E> {private E[] array;// 栈顶指针private int top;@SuppressWarnings("all")public ArrayStack(int capacity) {this.array = (E[]) new Object[capacity];}/*向栈顶压入元素Params:value-待压入值Returns:压入成功返回true,否则返回false*/@Overridepublic boolean push(E value) {if(isFull()){return false;}array[top] = value;top++;return true;}/*从栈顶弹出元素Returns:栈非空返回栈顶元素,栈为空返回null*/@Overridepublic E pop() {if(isEmpty()){return null;}E e = array[top-1];top--;return e;}/*返回栈顶元素,不弹出Returns:栈非空返回栈顶元素,栈为空返回null*/@Overridepublic E peek() {if(isEmpty()){return null;}E e = array[top-1];return e;}/*判断栈是否为空Returns:空返回true,非空返回false*/@Overridepublic boolean isEmpty() {return top == 0;}/*判断栈是否为满Returns:满返回true,空返回false*/@Overridepublic boolean isFull() {return top == array.length;}@Overridepublic Iterator<E> iterator() {return new Iterator<E>() {int p = top;@Overridepublic boolean hasNext() {return p > 0;}@Overridepublic E next() {E e = array[p-1];p--;return e;}};}
}

测试类

import org.junit.Test;import java.util.List;import static org.junit.jupiter.api.Assertions.*;public class TestArrayStack {@Testpublic void push() {ArrayStack<Object> stack = new ArrayStack<>(3);stack.push(1);stack.push(2);stack.push(3);assertFalse(stack.push(4));assertIterableEquals(List.of(3,2,1),stack);}@Testpublic void pop() {ArrayStack<Object> stack = new ArrayStack<>(3);stack.push(1);stack.push(2);stack.push(3);assertEquals(3,stack.pop());assertEquals(2,stack.pop());assertEquals(1,stack.pop());assertNull(stack.pop());System.out.println(stack.isEmpty());}
}

http://www.yayakq.cn/news/874372/

相关文章:

  • 低价网站建设多少钱怎么建设一个漫画网站
  • 自己想学做博客网站长沙推广网络营销公司
  • 普宁建设局网站义乌对外寻找代加工
  • 检查网站死链接莱芜杂谈话题
  • 网站标题更新wordpress仅搜索标题
  • 网站空间月流量seo自学教程
  • 手机静态网站建设课程设计报告做pc端网站市场
  • 锦州做网站多少钱做网站用哪个软件好
  • 郑州网站建设快速排名熊掌wordpress旧版
  • 网站建设和网页设计网站建设的准备工作
  • 在线做logo印章网站物流服务与管理
  • 企业网站建设58同城做视频的网站多少钱
  • 2015年做啥网站致富新女权时代的到来wordpress
  • 阿里巴巴官网国际站后端开发工程师前景
  • 高校英文网站建设 文献综述网站开发人员 怎么保存
  • 京东联盟建网站电子商务网站概念
  • Hdi做指数网站少儿编程培训机构排名前十
  • wordpress wlw网站目录优化
  • 休闲吧网站建设常用的网络推广方法有哪些
  • 扬中市平台公司萧山区seo关键词排名
  • 河南省和建设厅网站贷款类网站怎样做
  • php网站建设思路方案微网站免费创建平台
  • 做旅游产品的网站有哪些常州网站seo
  • 二手房网站开发html5网站修改
  • php网站开发都需要什么软件新闻近期大事件
  • 永州网站seo做网站工作怀孕
  • 淮南房地产网站建设网站网站去版权
  • 仙居网站建设找别人做网站交货时应该注意什么
  • 微云做网站购物网站 开店
  • 做网站是干嘛的厦门专业的网站制作公司