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

郑州专业做网站推广技巧

郑州专业做网站,推广技巧,东莞专业做淘宝网站建设,邯郸百姓网1. 队列 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作并具有先进先出特点的特殊线性表。 对尾:进行插入操作的一端。 对头:进行删除操作的一端。 2. 队列的模拟实现 队列可以通过链表或顺序表来实现。 2.1 …

1. 队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作并具有先进先出特点的特殊线性表。

对尾:进行插入操作的一端。

对头:进行删除操作的一端。

2. 队列的模拟实现

队列可以通过链表或顺序表来实现。

2.1 通过链表来实现队列

这里我们使用双向链表连实现。

2.1.1 接口

public class MyQueue {static class ListNode {public ListNode next;public ListNode prev;public int val;public ListNode(int val) {this.val = val;}}public ListNode first;public ListNode last;//入队列public void offer(int val) {}//出队列public int poll() {}//获取队头元素 但是不删除public int peek() {}//判空public boolean isEmpty() {}      
}

2.1.2 内部类

和双向链表一样。

    static class ListNode {public ListNode next;public ListNode prev;public int val;public ListNode(int val) {this.val = val;}}

2.1.3 入队列

思路:

         1. 先判断队列是否为空,为空头结点和尾结点同时指向入队node结点。

         2. 尾结点的后驱next指向入队node结点,入队结点的前驱prev指向尾结点,尾结点指向入队           node结点。

    public void offer(int val) {ListNode node = new ListNode(val);if(isEmpty()) {first = last = node;return;}last.next = node;node.prev = last;last = node;}

2.1.4 出队列

思路:

         1. 先判断队列是否为空,为空直接抛异常。

         2. 把头结点的val值先存一份。

         3. 再判断头结点的后驱是否为空,为空把头结点的后驱next的前驱prev置为空。

         4. 返回之前头结点的值。

    public int poll() {if(isEmpty()) {throw new QueueEmptyException();}int val = first.val;if(first.next != null) {first.next.prev = null;}first = first.next;return val;}

2.1.5 获取队头元素 但是不删除

思路:

        1. 先判断队列是否为空,为空直接抛异常。

        2. 返回头结点的val值。

    public int peek() {if(isEmpty()) {throw new QueueEmptyException();}int val = first.val;return val;}

2.1.6 判空

判读头结点是否等于空。

    public boolean isEmpty() {return first == null;}

2.2 通过顺序表来实现队列

如果我们直接使用顺序表来实现队列,在删除元素之后再插入元素会造成空间的浪费,所以我们使用循环队列来实现。(这里的循环队列我们浪费了一个空间)

2.2.1 接口

public class MyCircularQueue {public int[] elem;public int rear;public int front;//构造器,设置队列长度为 kpublic MyCircularQueue(int k) {}// 入队列public boolean enQueue(int value) {}//出队列public boolean deQueue() {}//获取对头元素public int Front() {}//获取队尾元素public int Rear() {}//检查循环队列是否为空。public boolean isEmpty() {}//检查循环队列是否已满。public boolean isFull() {}
}

2.2.2 构造器,设置队列长度为 k

给队列设置k个容量。

    public MyCircularQueue(int k) {elem = new int[k];}

2.2.3 入队列

思路:

         1. 先判断循环队列是否为空,为空返回false。

         2. 不为空插入value,并使rear向后移动一位,返回true。 

    public boolean enQueue(int value) {if(isFull()) {return false;}elem[rear] = value;rear = (rear+1)%elem.length;return true;}

2.2.4 出队列

思路:

         1. 先判断队列是否为空,为空返回false。

         2. 不为空,删除队列front下标元素,然后让front移动到下一位,并返true。

    public boolean deQueue() {if(isEmpty()) {return false;}front = (front+1)%elem.length;return true;}

 2.2.5 获取队头元素

思路:

         1. 先判断循环队列是否为空,为空返回-1.

         2. 不为空,返回队列front下标的元素。

    public int Front() {if(isEmpty()) {return -1;}return elem[front];}

2.2.6 获取队尾元素

思路:

         1. 判断队列是否为空,为空返回-1。

         2. 判断rear是否为零,为零返回数组长度-1下标的元素。

         3. 最后返回rear-1下标的元素。

    public int Rear() {if(isEmpty()) {return -1;}if(rear == 0) {return elem[elem.length-1];}return elem[rear-1];}

2.2.7 检查循环队列是否为空

判断front是否等于rear。

    public boolean isEmpty() {return front == rear;}

2.2.8 检查循环队列是否已满

判断front是否等于rear+1和数组长度取余的结果。

    public boolean isFull() {return (rear+1)%elem.length == front;}

3. JAVA中的队列(Queue)

3.1 Queue接口

3.2 Queue的常用方法

http://www.dtcms.com/wzjs/361438.html

相关文章:

  • 怎么跟网站建设公司谈怎么免费自己做推广
  • 中国建盏品牌形象设计大赛爱站网站长seo综合查询
  • 网站开发语言分类企业seo排名外包
  • 网站建好了怎么做淘宝客百度一下搜索网页
  • python 做网站速度夫唯seo视频教程
  • 网站图片属性是什么在线制作网站免费
  • 网站建设好公司好怎么注册个人网站
  • 手机百度关键词排名 seo网站优化软件企业网站的功能
  • 用 asp net 做 的网站泰安seo推广
  • 用red5做直播网站微信广告投放平台
  • dw制作wap网站怎么做百度帐号登录个人中心
  • 南阳卧龙区高端网站建设口碑百度搜索引擎优化详解
  • 金融网站如何做设计方案抖音seo怎么做的
  • 网站推广新手教程windows优化大师怎么用
  • vs中做网站设置背景图片推广软文范例
  • app设计网站推荐100个成功营销策划案例
  • 南阳市建设委员会网站灰色seo关键词排名
  • 中英文网站建设在线培训系统平台
  • 做淘客的网站都有哪几个国际足联世界排名
  • 找设计师做网站优化的近义词
  • 专门做效果图的网站营销网络营销
  • 推广单页网站免费制作500强企业seo服务商
  • 海外域名提示风险网站吗网站建设方案书
  • 阿里国际站韩语网站怎么做中国十大品牌策划公司
  • 做一个网站需要投入多少钱关键词分为哪几类
  • sns网站建设哪家公司好百度双十一活动
  • 富阳网站设计销售培训课程
  • 河南郑州网站建设公司搜索引擎营销实训报告
  • 工程公司会计分录seo搜索引擎优化兴盛优选
  • 做经营行网站需要什么姓名查询