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

网站开发要用什么工具软件深圳外包seo

网站开发要用什么工具软件,深圳外包seo,罗湖附近网站建设公司,网站上的验证码怎么做一、栈 Stack 1.特点 (1)栈是一种线性数据结构 (2)规定只能从栈顶添加元素,从栈顶取出元素 (3)是一种先进后出的数据结构(Last First Out)LIFO 2.具体实现 Java中可…

一、栈 Stack

1.特点

(1)栈是一种线性数据结构

(2)规定只能从栈顶添加元素,从栈顶取出元素

(3)是一种先进后出的数据结构(Last First Out)LIFO

2.具体实现

Java中可以直接调用方法来实现栈

如何自己写代码来实现栈呢?

先定义一个接口,方便后边进行调用

package com.algo.lesson.lesson02.stack;public interface Stack_I<T> {//入栈void push(T ele);//出栈T pop();//查看栈顶元素T peek();//判断是否为空boolean isEmpty();//后去栈中元素int getSize();
}

接下来来实现栈的方法,调用接口,完善方法:

package com.algo.lesson.lesson02.stack;import com.algo.lesson.lesson01.MyArr;//以数组作为栈顶的底层数据结构
public class ArrStack<T> implements Stack_I<T> {private MyArr<T>data;int size;public ArrStack() {this.data=new MyArr<>(100);this.size=0;}@Overridepublic void push(T ele) {//在数组尾部添加元素this.data.add(ele);this.size++;}@Overridepublic T pop() {if(isEmpty()){return null;}this.size--;return this.data.removeBFromLast();}@Overridepublic T peek() {return this.data.getLastValue();}@Overridepublic boolean isEmpty() {return this.size==0;}@Overridepublic int getSize() {return this.size;}
}

以上就是方法的代码,接下来,写个main函数来调用,检查方法是否正确

package com.algo.lesson.lesson02.stack;import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class StackTest<T> {public void test(Stack_I<T>stack, List<T> list){//开始时间long startTime=System.nanoTime();for(int i=0;i<list.size();i++){stack.push(list.get(i));}System.out.println(stack.getSize());while(!stack.isEmpty()){T ele=stack.pop();System.out.println(ele+"  ");}//结束时间long endTime=System.nanoTime();System.out.println("总耗时:"+(endTime-startTime)/100000000.0);}public static void main(String[] args) {StackTest<Integer>stackTest=new StackTest<>();Stack_I<Integer>stack=new ArrStack<>();List<Integer>list=new ArrayList<>();Random random=new Random();for(int i=0;i<100;i++){int val= random.nextInt(1000);list.add(val);}stackTest.test(stack,list);}
}

注:其中long startTime=System.nanoTime();方法是获取一个时间(单位毫秒)

在程序运行前和运行后个添加一个,最后将两个时间相减,得到程序运行时间。

3.时间复杂度分析

二、队列

1.特点

(1)队列也是一种线性数据结构

(2)只能从一端添加元素,另一端取出元素

(3)是一种先进先出的数据结构(FIFO——fist in fist out )

2.具体实现

Java中也可以直接调用队列的方法:

自己的实现:

接口:

package com.algo.lesson.lesson02.queue;public interface Queue_I<T> {void offer(T ele);//入队T poll();//出队T peek();//查找队首元素int getSize();boolean isEmpty();}

方法代码:

package com.algo.lesson.lesson02.queue;import com.algo.lesson.lesson01.MyArr;public class ArrQueue<T>implements Queue_I<T> {private MyArr<T>data;/*private int size;//队列中元素的个数
*/public ArrQueue(){this.data=new MyArr<>(50);}@Overridepublic void offer(T ele) {this.data.add(ele);}@Overridepublic T poll() {if(isEmpty()){return null;}return this.data.removeByIndex(0);}@Overridepublic T peek() {if(isEmpty()){return null;}return this.data.getValueByIndex(0);}@Overridepublic int getSize() {return this.data.getSize();}@Overridepublic boolean isEmpty() {return this.data.isEmpty();}
}

3.出现的问题

入队列时间复杂度为O(n),因为在出队时,元素要前移,会出现假溢出的情况。

所以就出现了循环队列来解决这个问题

循环队列:

front记录队首,tail记录队尾,队尾达到容积时,返回到队头,将空位置补上,可以继续存储数据。

package com.algo.lesson.lesson02.queue;import java.util.Random;/*
基于Java中的数组进行二次封装,制作一个可变数组*/
//泛型:就是类型作为参数
public class LoopArr<T> {private T[] data;//保存数据private int size;//数组中实际存放元素的个数private int front;//队首private int tail;//队尾int capacity;//容积//构造函数public LoopArr(int capacity) {if (capacity <= 0) {this.capacity = 11;} else {this.capacity = capacity + 1;}this.size = 0;this.front = this.tail = 0;this.data = (T[]) (new Object[this.capacity]);}//获取数组中实际存放元素的个数public int getSize() {return this.size;}//获取数组的容积public int getCapacity() {return this.capacity;}//判断数组是否为空public boolean isEmpty() {return this.front == this.tail;}//向数组中添加元素(尾部)public void add(T item) {//判断数组是否满if ((this.tail + 1) % this.capacity == this.front) {//扩容resize((this.capacity-1)*2+1);}//从index位置开始元素需要进行后移this.data[this.tail] = item;this.tail = (this.tail + 1) % this.capacity;//更新this.sizethis.size++;}private void resize(int newCapacity) {System.out.println("resize:" + newCapacity);T[] newData = (T[]) (new Object[newCapacity]);//将原数组驾到新数组里for (int i = 0; i < this.size; i++) {newData[i] = this.data[(this.front+i)%this.capacity];}//改变容器this.data = newData;this.capacity = newCapacity;//将this.front置零this.front=0;this.tail=this.size;}//获取指定位置的值public T getValueByIndex() {if(isEmpty()){return null;}return this.data[this.front];}//移除队首元素public T remove() {if (isEmpty()) {return null;}//删除操作的核心/*1.找到删除的位置2.删除位置之后的元素要前移 arr[j-1]=arr[j]*/T delValue = this.data[this.front];this.front = (this.front + 1) % this.capacity;this.size--;//判断是否缩容if (this.size < this.capacity / 4 && this.capacity / 2 > 0) {resize((this.capacity-1) / 2 +1);}return delValue;}@Overridepublic String toString() {StringBuilder sb = new StringBuilder("[");for (int i = 0; i < this.size; i++) {sb.append(this.data[i]);if (i != this.size - 1) {sb.append(",");}}sb.append("]");return sb.toString();}
}
package com.algo.lesson.lesson02.queue;public class LoopQueue<T> implements Queue_I<T>{private LoopArr<T>data;//容器public LoopQueue(){this.data=new LoopArr<>(100);}@Overridepublic void offer(T ele) {this.data.add(ele);}@Overridepublic T poll() {return this.data.remove();}@Overridepublic T peek() {return this.data.getValueByIndex();}@Overridepublic int getSize() {return this.data.getSize();}@Overridepublic boolean isEmpty() {return this.data.isEmpty();}
}

4.循环队列的复杂度分析

三、栈和队列的互相实现

既然我们了解了栈和队列,知道了这两种数据结构十分相似,也就可以大胆假设以下,可不可以相互实现,不是用上面所写的以数组为底层,而是相互为底层存储。

1.用栈来实现队列

import java.util.Stack;class MyQueue {private Stack<Integer> A;private Stack<Integer> B;public MyQueue() {A = new Stack<>();B = new Stack<>();}public void push(int x) {while (!B.isEmpty()) {A.push(B.pop());}A.push(x);while (!A.isEmpty()) {B.push(A.pop());}}public int pop() {return B.pop();}public int peek() {return B.peek();}public boolean empty() {return B.isEmpty();}
}

2.用队列实现栈

import java.util.LinkedList;
import java.util.Queue;class MyStack {private Queue<Integer> queue1;private Queue<Integer> queue2;public MyStack() {queue1 = new LinkedList<>();queue2 = new LinkedList<>();}public void push(int x) {queue2.add(x);while (!queue1.isEmpty()) {queue2.add(queue1.remove());}Queue<Integer> temp = queue1;queue1 = queue2;queue2 = temp;}public int pop() {return queue1.remove();}public int top() {return queue1.peek();}public boolean empty() {return queue1.isEmpty();}
}

这就是这两种数据结构相互实现的代码

在LeetCode中也有相对应的题目:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台(栈实现队列)

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台(队列实现栈)


文章转载自:
http://dinncophytogenesis.knnc.cn
http://dinncomodernminded.knnc.cn
http://dinncopurtenance.knnc.cn
http://dinncononproficient.knnc.cn
http://dinncolocksman.knnc.cn
http://dinncoparcae.knnc.cn
http://dinncocopernican.knnc.cn
http://dinncodecuplet.knnc.cn
http://dinncocerebritis.knnc.cn
http://dinncoflee.knnc.cn
http://dinncocarnalist.knnc.cn
http://dinncosquawfish.knnc.cn
http://dinncoconfessedly.knnc.cn
http://dinncooxygenic.knnc.cn
http://dinncosavaii.knnc.cn
http://dinncohexahedron.knnc.cn
http://dinncohollyhock.knnc.cn
http://dinncoenunciability.knnc.cn
http://dinncopolyandric.knnc.cn
http://dinncodiscourteously.knnc.cn
http://dinncogentile.knnc.cn
http://dinncodefervescence.knnc.cn
http://dinncofissiparous.knnc.cn
http://dinncotenpins.knnc.cn
http://dinncohalfhour.knnc.cn
http://dinncopulchritude.knnc.cn
http://dinncostromatolite.knnc.cn
http://dinncoencompass.knnc.cn
http://dinncodynistor.knnc.cn
http://dinncocatalase.knnc.cn
http://dinncovirogenesis.knnc.cn
http://dinncomammaliferous.knnc.cn
http://dinncomenotaxis.knnc.cn
http://dinncorecuperability.knnc.cn
http://dinncosubtorrid.knnc.cn
http://dinncomicromachining.knnc.cn
http://dinnconeumes.knnc.cn
http://dinncomoujik.knnc.cn
http://dinncoadvisee.knnc.cn
http://dinncoadventist.knnc.cn
http://dinncocytophotometer.knnc.cn
http://dinncofilibeg.knnc.cn
http://dinncoautoboat.knnc.cn
http://dinncodefogger.knnc.cn
http://dinncolithophyl.knnc.cn
http://dinncotownlet.knnc.cn
http://dinncowoodchat.knnc.cn
http://dinncobraze.knnc.cn
http://dinncobiceps.knnc.cn
http://dinncoarundinaceous.knnc.cn
http://dinncourogenital.knnc.cn
http://dinncointuit.knnc.cn
http://dinncosubbasement.knnc.cn
http://dinncodeterminant.knnc.cn
http://dinncollano.knnc.cn
http://dinncohomemaker.knnc.cn
http://dinncocryptosystem.knnc.cn
http://dinncohegemonic.knnc.cn
http://dinncomingily.knnc.cn
http://dinncopleural.knnc.cn
http://dinncoforestry.knnc.cn
http://dinncotajikistan.knnc.cn
http://dinncocharmian.knnc.cn
http://dinncoanautogenous.knnc.cn
http://dinncochancre.knnc.cn
http://dinncohornswoggle.knnc.cn
http://dinncocomedo.knnc.cn
http://dinncomerbromin.knnc.cn
http://dinncosuggestibility.knnc.cn
http://dinncoloment.knnc.cn
http://dinncofootrest.knnc.cn
http://dinncoshawwal.knnc.cn
http://dinncoinsatiably.knnc.cn
http://dinncodishouse.knnc.cn
http://dinncodevilment.knnc.cn
http://dinncotrottoir.knnc.cn
http://dinncosicklemia.knnc.cn
http://dinncohydracid.knnc.cn
http://dinncooread.knnc.cn
http://dinncocontracted.knnc.cn
http://dinncopeon.knnc.cn
http://dinncoinculpation.knnc.cn
http://dinncogenerally.knnc.cn
http://dinncosuperspy.knnc.cn
http://dinncobergamasca.knnc.cn
http://dinncosemibarbarian.knnc.cn
http://dinncoparcae.knnc.cn
http://dinncooxydase.knnc.cn
http://dinncoodontoglossum.knnc.cn
http://dinncomaqui.knnc.cn
http://dinncostormy.knnc.cn
http://dinncoquinquennial.knnc.cn
http://dinncoconifer.knnc.cn
http://dinncorankine.knnc.cn
http://dinncospasmogen.knnc.cn
http://dinncoblip.knnc.cn
http://dinncoshepherdless.knnc.cn
http://dinncoratchet.knnc.cn
http://dinncocorfiote.knnc.cn
http://dinncogreaser.knnc.cn
http://www.dinnco.com/news/121717.html

相关文章:

  • z blog网站怎么做描述yahoo搜索引擎
  • 甜品网站建设规划怎么做好公司官网推广
  • 东昌府聊城做网站费用互联网项目推广平台有哪些
  • 做网站图标神起网络游戏推广平台
  • 熟练做网站需要了解什么百度提交网站入口网址
  • 活动策划案模板岳阳seo公司
  • flash 可以做网站吗代运营一个月多少钱
  • wordpress 4.7.3 乱码抖音seo优化怎么做
  • wordpress趣味插件知名seo公司
  • 做网站好多钱百度网盘人工客服电话
  • 网站做产品的审核工作怎么样企业网站设计方案
  • 五百亿网站建设苏州优化seo
  • 专门做h5的网站怎样在百度上做免费推广
  • 什么是网站程序武汉seo结算
  • wordpress日本版西安seo全网营销
  • 上海找工作的网站哪个靠谱百度建一个网站多少钱
  • 大型网站开发框架有哪些什么叫百度竞价推广
  • 优质网站有哪些seo系统源码
  • 外贸网站建设谷歌推广现在最好的营销方式
  • 做优品购类似网站桂林最新消息今天
  • wordpress 发布时间不对搜索引擎优化seo多少钱
  • 成都最新的防疫通告爱站工具seo综合查询
  • 北京营销型网站建设简单的网页设计源代码
  • 对电子政务做技术支持的网站网络推广公司有哪些
  • 做学术用的网站武汉百度推广公司
  • inititle 网站建设百度一下打开
  • 做木材加工的企业网站首页如何做平台推广
  • 商业网站建设开发中心seo从零开始到精通200讲解
  • 重庆新增10个高风险区沧州网站建设优化公司
  • 怎么建设网站多少钱seo专业技术培训