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

做药物研发的人上什么网站兰州网站建设营销q479185700刷屏

做药物研发的人上什么网站,兰州网站建设营销q479185700刷屏,网站及邮件系统建设,域名备案和网站备案文章目录 前言1. 栈的基础概要1.1 栈的特征1.2 栈的操作1.3 Java中的栈 2. 栈的实现#xff08;手写栈#xff09;2.1 基于数组实现2.2 基于链表实现2.3 基于LinkedList实现 总结 前言 提示#xff1a;我自己一个人的感觉很好 我并不想要拥有你 除非你比我的独处更加宜人 --… 文章目录 前言1. 栈的基础概要1.1 栈的特征1.2 栈的操作1.3 Java中的栈 2. 栈的实现手写栈2.1 基于数组实现2.2 基于链表实现2.3 基于LinkedList实现 总结 前言 提示我自己一个人的感觉很好 我并不想要拥有你 除非你比我的独处更加宜人 --瓦尔桑·希雷 1. 栈的基础概要 1.1 栈的特征 栈和队列是比较特殊的线性表为什么特殊呢又称为访问受限的线性表。栈常用于表达式、符号等运算的基础也是递归的底层实现。理论上递归可以做的题目栈都是可以做的只是有些问题用栈相对复杂一些。 栈的底层实现是我们常见的链表或者顺序表栈与线性表的最大区别在于数据的存取操作被限制了其插入和删除操作只允许在线性表的一端进行。一般而言我们把允许操作的一端称为栈顶top不可以操作的一端称为栈底bottom同时插入元素的操作称为入栈push删除元素的操作称为出栈pop。若栈中没有任何元素则称为空栈栈的结构如图所示 1.2 栈的操作 栈的常见操作主要有 push(E):增加一个元素Epop():弹出元素Epeek():显示栈顶元素但是不出栈empty():判断栈是否为空 我们在设计自己的栈的时候不管是使用数组还是链表都需要实现以上的几个方法。 一道经典的题目入栈顺序为1234所有可能的出栈序列是什么 这个题是什么意思呢举个例子我们可以先让12入栈然后21出栈再让34入栈然后一次出栈就可以得到2143的序列。 4个元素的全排列有4 24栈要求符合先进后出根据这个条件我们可以排除 1234 √ 1243 √ 1324 √ 1342 √ 1423 × 1432 √ 2134 √ 2143 √ 2314 √ 2341 √ 2413 × 2431 √ 3124 × 3142 × 3214 √ 3241 √ 3412 × 3421 √ 4123 × 4132 × 4213 × 4231 × 4312× 4321 √ 14中可能10中不可能。 1.3 Java中的栈 Java中的栈uitl中就提供了栈Stack类使用起来也不复杂我们看一下例子 import java.util.Stack;public class MainTest {public static void main(String[] args) {StackInteger stack new Stack();// 入栈stack.push(1);stack.push(2);stack.push(3);stack.push(4);// 出栈stack.pop();while (!stack.isEmpty()) {// 展示但是不删除System.out.println(stack.peek());// 删除System.out.println(stack.pop());}} } 2. 栈的实现手写栈 我们在学习栈的过程中需要了解一些问题top栈顶指针的指向有的地方指向栈顶再往上一个空位有的地方指向栈顶元素。我们确定好设计就行根据题目调整有时候也可以直接问面试官 top指向哪里这里采用指向栈顶空位置。 如果我们自己要实现栈可以使用数组链表Java中提供了LinkedList三种基本实现方式我们都可以看一下。 2.1 基于数组实现 采用顺序表实现的栈内部以数组为基础实现对元素的存取操作。在应用中还要之一每次入栈之前要确保栈的容量是否足够不够需要考虑扩容的问题。 我们画一下入栈的过程 出栈的过程 出栈先将栈顶元素取出然后top– 展示代码 import java.util.Arrays; ​ class MystackT {private Object[] stack;// 栈顶指针private int top; ​public Mystack() {// 初始长度为10stack new Object[10];} ​/*** 判断是否为空** return*/public boolean isEmpty() {return top 0;} ​/*** 返回栈顶元素但是不删除** return*/public T peek() {T t null;if (top 0) {t (T) stack[top - 1];}return t;} ​/*** 入栈操作** param t*/public void push(T t) {expandCapacity(top 1);stack[top] t;top;} ​public T pop() {T t peek();if (!isEmpty()) {// 清除元素stack[top - 1] null;top--;}return t;} ​/*** 确保容量** param size*/public void expandCapacity(int size) {int len stack.length;if (size len) {size size * 3 / 2 1;stack Arrays.copyOf(stack, size);}} ​ ​ ​ ​public static void main(String[] args) {MystackString stack new Mystack();System.out.println(stack.peek());// nullSystem.out.println(stack.isEmpty());// truestack.push(java);stack.push(is);stack.push(beautiful);stack.push(language);System.out.println(stack.pop());// languageSystem.out.println(stack.isEmpty());// falseSystem.out.println(stack.peek()); // beautiful} }2.2 基于链表实现 链表用来实现栈也很简单头插法在头部操作链表就可以了。 我们先画个图 在链表的那一章我们介绍过没有虚拟节点时对链表头部元素进行插入和删除的操作不记得的可以回顾一下算法通过村第二关-链表青铜笔记_师晓峰的博客-CSDN博客这里基于链表实现栈的操作时完全一样的。 代码实现 class ListStackT {// 构造节点class NodeT {public T t;private Node next;}public NodeT head;ListStack() {head null;}/*** 入栈操作* param t*/public void push(T t) {if (t null) {throw new IllegalStateException(参数不能为空);}// 头节点为空if (head null) {head new NodeT();head.t t;head.next null;}else {NodeT temp head;head new NodeT();head.t t;head.next temp;}}/*** 出栈操作* return*/public T pop(){if (head null) {return null;}T t head.t;head head.next;return t;}public T peek(){if (head null) {return null;}return head.t;}/*** 判断是否为空** return*/public boolean isEmpty() {return head null;}public static void main(String[] args) {ListStack stack new ListStack();System.out.println(stack.isEmpty());// truestack.push(Java);stack.push(is);stack.push(beautiful);System.out.println(stack.peek());// beautifulSystem.out.println(stack.pop());// beautifulSystem.out.println(stack.isEmpty());// false} }2.3 基于LinkedList实现 这里就很简单了直接上代码就行 import java.util.LinkedList;/*** 基于Java的LinkedList来实现栈* param T*/ public class LinkedListStackT {private LinkedListT ll;LinkedListStack(){ll new LinkedListT();}/*** 入栈操作* param t*/public void push( T t){ll.addFirst(t);}/*** 出栈但是不删除* return*/public T peek(){T t null;if (!ll.isEmpty()){t ll.peek();}return t;}public T pop(){return ll.removeFirst();}public boolean isEmpty(){return ll.isEmpty();}public static void main(String[] args) {LinkedListStackString stack new LinkedListStack();System.out.println(stack.isEmpty());//trueSystem.out.println(stack.peek());//nullstack.push(java);stack.push(is);stack.push(beautiful);System.out.println(stack.peek());//beautifulSystem.out.println(stack.pop());//beautifulSystem.out.println(stack.isEmpty());//false} } 总结 提示记住栈的特性先进后出
http://www.dnsts.com.cn/news/179747.html

相关文章:

  • 免费凡科网站会员卡系统一般哪里买
  • 做微信公众号网站源码上海开发小程序
  • 网页设计网站结构图怎么弄网站页面布局用什么做
  • 正规网站建设商家worldpress和wordpress
  • 成都区块链网站开发移动通网站建设
  • seo网站搜索优化网页设计简单作品代码
  • 临海高端营销型网站建设地址世界杯现场直播
  • 做网站怎么做小图标如何把建设银行网站下载到桌面
  • 城乡与建设厅网站首页网站开发所需人才
  • 永久免费网站怎么建浙江省网站建设
  • 温州哪里有做网站永久免费建个人网站
  • 有哪些学校的网站做的好开发软件和做网站的区别
  • 柳州网站开发公司盐城建设局网站
  • 注册微信公众平台seo兼职在家怎么做
  • 撤销个人网站备案郑州seo推广优化
  • 二级网站怎么建wordpress旧版本
  • 建设银行官方网站官网广告型网站怎么做的
  • 手机访问不了自己做的网站吗连云港市网站平台
  • 王晴儿网站建设wordpress 数据库脚本
  • 外贸推广哪个公司好搜索引擎优化答案
  • 番禺网站 建设信科网络湖南百度seo
  • 梧州网站制作网站为什么被挂马
  • 广州建网站哪儿济南兴田德润简介网站上的专题 怎么设计
  • html 5电影网站源码自己搭建公网ip服务器
  • 鞋子网站建设策划书如何给网站备案
  • 没有备案的网站 推广2022年企业所得税最新标准
  • wordpress正在执行例行维护_请一分钟后回来.上海网站seo策划
  • php网站建设的公司潍坊注册公司流程和费用标准
  • 网站建设公司正规吗如何创建网站平台的详细步骤
  • 建手机网站款软件吉林省建设部网站