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

建个网站找关键词搜索量全网查询

建个网站找,关键词搜索量全网查询,企业网站的技术维护内容主要包括,赣州章贡区疫情1. 简介 栈(Stack)是计算机科学中的一种抽象数据类型,它遵循特定的操作顺序,即后进先出(Last In First Out,LIFO)。这意味着最后添加到栈中的元素将是第一个被移除的。栈的基本操作通常包括&am…

1. 简介

栈(Stack)是计算机科学中的一种抽象数据类型,它遵循特定的操作顺序,即后进先出(Last In First Out,LIFO)。这意味着最后添加到栈中的元素将是第一个被移除的。栈的基本操作通常包括:

  1. 压栈(Push):将一个元素添加到栈的顶部。

  2. 弹栈(Pop):移除栈顶部的元素,并返回该元素的值。

  3. 查看栈顶(Peek):返回栈顶部的元素,但不将其从栈中移除。

  4. 检查栈空(IsEmpty):检查栈是否为空,通常用于在执行操作前确保栈中至少有一个元素。

  5. 获取栈大小(Size):返回栈中元素的数量。

栈可以用数组或链表来实现。数组实现的栈具有固定的大小,而链表实现的栈可以动态调整大小。

2. 实例

2.1 基于数组实现

public class StackUsingArray {private int[] stack;private int top;private int capacity;public StackUsingArray(int capacity) {this.capacity = capacity;stack = new int[capacity];top = -1;}// Push element onto the stackpublic void push(int item) {if (top == capacity - 1) {System.out.println("Stack is full!");} else {stack[++top] = item;}}// Pop element from the stackpublic int pop() {if (top == -1) {System.out.println("Stack is empty!");return -1;} else {return stack[top--];}}// Peek the top element of the stackpublic int peek() {if (top == -1) {System.out.println("Stack is empty!");return -1;} else {return stack[top];}}// Check if stack is emptypublic boolean isEmpty() {return top == -1;}// Get the size of the stackpublic int size() {return top + 1;}public static void main(String[] args) {StackUsingArray stack = new StackUsingArray(5);stack.push(10);stack.push(20);stack.push(30);System.out.println("Top element: " + stack.peek()); // Output: 30System.out.println("Popped element: " + stack.pop()); // Output: 30System.out.println("Stack size: " + stack.size()); // Output: 2}
}
  • 可以增加扩容机制---》ArrayDeque源码中扩容规则:如果数小则翻倍,否则增加50%。

private void grow(int needed) {// overflow-conscious codefinal int oldCapacity = elements.length;int newCapacity;// Double capacity if small; else grow by 50%int jump = (oldCapacity < 64) ? (oldCapacity + 2) : (oldCapacity >> 1);if (jump < needed|| (newCapacity = (oldCapacity + jump)) - MAX_ARRAY_SIZE > 0)newCapacity = newCapacity(needed, jump);final Object[] es = elements = Arrays.copyOf(elements, newCapacity);// Exceptionally, here tail == head needs to be disambiguatedif (tail < head || (tail == head && es[head] != null)) {// wrap around; slide first leg forward to end of arrayint newSpace = newCapacity - oldCapacity;System.arraycopy(es, head,es, head + newSpace,oldCapacity - head);for (int i = head, to = (head += newSpace); i < to; i++)es[i] = null;}
}

2.2 基于链表实现

public class StackUsingLinkedList {private Node top;private class Node {int data;Node next;Node(int data) {this.data = data;this.next = null;}}// Push element onto the stackpublic void push(int item) {Node newNode = new Node(item);newNode.next = top;top = newNode;}// Pop element from the stackpublic int pop() {if (top == null) {System.out.println("Stack is empty!");return -1;} else {int poppedData = top.data;top = top.next;return poppedData;}}// Peek the top element of the stackpublic int peek() {if (top == null) {System.out.println("Stack is empty!");return -1;} else {return top.data;}}// Check if stack is emptypublic boolean isEmpty() {return top == null;}// Get the size of the stackpublic int size() {int size = 0;Node current = top;while (current != null) {size++;current = current.next;}return size;}public static void main(String[] args) {StackUsingLinkedList stack = new StackUsingLinkedList();stack.push(10);stack.push(20);stack.push(30);System.out.println("Top element: " + stack.peek()); // Output: 30System.out.println("Popped element: " + stack.pop()); // Output: 30System.out.println("Stack size: " + stack.size()); // Output: 2}
}

2.3 基于Deque实现类实现

Java中的Deque接口提供了一个双端队列实现,可以非常方便地用来实现栈。

import java.util.Deque;
import java.util.LinkedList;public class StackUsingDeque {private Deque<Integer> stack;public StackUsingDeque() {stack = new LinkedList<>();}// Push element onto the stackpublic void push(int item) {stack.push(item);}// Pop element from the stackpublic int pop() {if (stack.isEmpty()) {System.out.println("Stack is empty!");return -1;} else {return stack.pop();}}// Peek the top element of the stackpublic int peek() {if (stack.isEmpty()) {System.out.println("Stack is empty!");return -1;} else {return stack.peek();}}// Check if stack is emptypublic boolean isEmpty() {return stack.isEmpty();}// Get the size of the stackpublic int size() {return stack.size();}public static void main(String[] args) {StackUsingDeque stack = new StackUsingDeque();stack.push(10);stack.push(20);stack.push(30);System.out.println("Top element: " + stack.peek()); // Output: 30System.out.println("Popped element: " + stack.pop()); // Output: 30System.out.println("Stack size: " + stack.size()); // Output: 2}
}

2.4 总结

  • 数组实现:适用于栈大小已知且不频繁改变大小的情况。pushpop操作的时间复杂度为O(1),但如果栈满时,扩展数组会带来一定的性能开销。

  • 链表实现:适用于栈大小不固定的情况。链表实现的栈无需考虑容量问题,但每次操作时需要额外的内存空间来存储节点指针。

  • Deque实现:这是最推荐的实现方式,因为它提供了高效的pushpop操作,并且实现简洁。

Deque接口可以通过LinkedListArrayDeque来实现。如果追求性能,ArrayDeque通常是更好的选择,因为它的底层是基于数组的,避免了链表的节点分配开销。

相关笔试题:基于栈(stack)的部分笔试题

不积跬步,无以至千里 --- xiaokai

http://www.tj-hxxt.cn/news/98510.html

相关文章:

  • 做网站公司郑州郑州的网站建设公司专业seo推广
  • 广州市网站建设服务机构品牌推广和品牌营销
  • 佛山新网站建设市场百度seo推广是什么
  • 做本地化的返利网站怎么样外贸全网营销推广
  • 杭州企业建设网站公司优化资源配置
  • 建设网站需要云服务器吗免费网页设计制作网站
  • 网站引流怎么做如何创建一个属于自己的网站
  • c2c网站建设策划书网站推广 方法
  • 小众高逼格公司名字青岛官网seo
  • 企业网站如何建立百度营销app
  • 下载网站 源码seo网站推广技术
  • 关于校园网站建设的建议免费网络空间搜索引擎
  • windows2012系统怎么建设网站网络营销和推广的方法
  • 济南市建设工程招投标协会网站北京seo关键词排名优化软件
  • 长沙小程序公司网站seo价格
  • 网站制作潍坊区域企业网站优化公司
  • 页面模板在公号什么地方显示seo好seo
  • vb做网站时怎么添加图片百度外推排名
  • 做网站工具岳阳网站界面设计
  • 2018 政府网站建设发言优化大师使用心得
  • 成都各公司网站深圳互联网公司50强
  • 网站的二次开发网络营销买什么好
  • 邳州做网站济宁seo公司
  • 网站怎么添加管理员百度竞价推广登录
  • 广西南宁人才招聘网站域名注册局
  • 网站开发配置状态统计长沙网站开发制作
  • 深圳专业网站建设制作价格低济南seo排名搜索
  • 个人介绍网站内容中国十大seo
  • 专做畜牧招聘网站的权重查询爱站网
  • 手机壁纸网站大全品牌宣传策划公司