精华内容
下载资源
问答
  • (假设队头不存放数据) 答案:(rear-front+N)%N (4) 队和队的条件 为了区分队还是堆的情况,有多种处理方式: 方式1: 牺牲一个单元来区分队和队,入队时少用一个队列单元,即约定以"队头指针在队尾指针...

    参考链接

    顺序存储结构的循环队列

    假设循环队列的队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度。
    (1) 入队时队尾指针前进1:(rear+1)%QueueSize
    (2) 出队时队头指针前进1:(front+1)%QueueSize
    (3) 队列长度:(rear-front+QueueSize)%QueueSize

    现有一循环队列,其队头指针为front,队尾指针为rear;循环队列长度为N。其队内有效长度为?(假设队头不存放数据)
    答案:(rear-front+N)%N
    (4) 队空和队满的条件
    为了区分队空还是堆满的情况,有多种处理方式:
    方式1: 牺牲一个单元来区分队空和队满,入队时少用一个队列单元,即约定以"队头指针在队尾指针的下一位置作为队满的标志"。
    ``队满条件为:(rear+1)%QueueSize==front

    队空条件为:front==rear

    队列长度为:(rear-front++QueueSize)%QueueSize
    ``

    方式2: 增设表示队列元素个数的数据成员size,此时,队空和队满时都有front==rear。
    ``队满条件为:size==QueueSize

    队空条件为:size==0
    ``

    方式3: 增设tag数据成员以区分队满还是队空
    ``tag表示0的情况下,若因删除导致front==rear,则队空;

    tag等于1的情况,若因插入导致front==rear则队满
    ``

    展开全文
  • 环形队列的判空判满是一个比较基础的问题,可以通过以下两种方法来实现, 使用一个专门的变量来记录环形队列中的元素个数,当元素数量为0时,队列为空,当元素数量为队列的大小时,队列为满。 将尾节点前面一个...

    环形队列的判空和判满是一个比较基础的问题,可以通过以下两种方法来实现,

    • 使用一个专门的变量来记录环形队列中的元素个数,当元素数量为0时,队列为空,当元素数量为队列的大小时,队列为满。
    • 将尾节点前面一个空间留出来,不放置元素,当头节点快要追上尾节点的时候,用来判满。

    定义环形队列抽象类

    #define MAX_SIZE    1024
    
    class CircularQueue {
    protected:
    	int head;
    	int tail;
    	int* data;
    	int size;
    public:
    	CircularQueue(int size);
    	int getSize();
    	virtual bool enqueue(int val) = 0;
    	virtual bool dequeue(int *ptr) = 0;
    	virtual bool empty() = 0;
    	virtual bool full() = 0;
    	~CircularQueue();
    };
    
    CircularQueue::CircularQueue(int size) {
    	if (size <= 0 || size > MAX_SIZE) {
    		this->data = NULL;
    		return ;
    	}
    	this->data = new int[size];
    	this->size = size;
    	this->head = 0;
    	this->tail = 0;
    }
    
    CircularQueue::~CircularQueue() {
    	if (this->data) {
    		delete []this->data;
    	}
    }
    
    int CircularQueue::getSize() {
    	return this->size;
    }

    方法一: 

    class Queue1 : public CircularQueue {
    private:
    	int cap;
    public:
    	Queue1(int size) : CircularQueue(size) {
    		this->cap = 0;
    	}
    	bool enqueue(int val);
    	bool dequeue(int *ptr);
    	bool empty();
    	bool full();
    };
    
    bool Queue1::empty() {
    	return this->cap == 0;
    }
    
    bool Queue1::full() {
    	return this->cap == this->size;
    }
    
    bool Queue1::enqueue(int val) {
    	if (this->full()) {
    		return false;
    	}
    	this->data[this->head] = val;
    	this->head = (this->head + 1) % this->size;
    	this->cap++;
    
    	return true;
    }
    
    bool Queue1::dequeue(int* ptr) {
    	if (ptr == NULL || this->empty()) {
    		return false;
    	}
    	*ptr = this->data[this->tail];
    	this->tail = (this->tail + 1) % this->size;
    	this->cap--;
    
    	return true;
    }

    方法二: 

    class Queue2 : public CircularQueue{
    public:
    	Queue2(int size) : CircularQueue(size) {}
    	bool enqueue(int val);
    	bool dequeue(int *ptr);
    	bool empty();
    	bool full();
    };
    
    bool Queue2::empty() {
    	return this->tail == this->head;
    }
    
    bool Queue2::full() {
    	return (this->head + 1) % this->size == this->tail;
    }
    
    bool Queue2::enqueue(int val) {
    	if (this->full()) {
    		return false;
    	}
    	this->data[this->head] = val;
    	this->head = (this->head + 1) % this->size;
    
    	return true;
    }
    
    bool Queue2::dequeue(int* ptr) {
    	if (ptr == NULL || this->empty()) {
    		return false;
    	}
    	*ptr = this->data[this->tail];
    	this->tail = (this->tail + 1) % this->size;
    
    	return true;
    }

    测试代码:

    #include <iostream>
    
    using namespace std;
    
    void test() {
    	Queue1 q(3);
    	int ret = q.enqueue(1);
    	cout << "enqueue result: " << ret << endl;
    
    	ret = q.enqueue(2);
    	cout << "enqueue result: " << ret << endl;
    
    	ret = q.enqueue(3);
    	cout << "enqueue result: " << ret << endl;
    
    	int tmp = 0;
    	ret = q.dequeue(&tmp);
    	cout << "dequeue result: " << ret << endl;
    
    	ret = q.enqueue(4);
    	cout << "enqueue result: " << ret << endl;
    
    	cout << endl;
    }
    void test2() {
    	Queue2 q(3);
    	int ret = q.enqueue(1);
    	cout << "enqueue result: " << ret << endl;
    
    	ret = q.enqueue(2);
    	cout << "enqueue result: " << ret << endl;
    
    	ret = q.enqueue(3);
    	cout << "enqueue result: " << ret << endl;
    
    	int tmp = 0;
    	ret = q.dequeue(&tmp);
    	cout << "dequeue result: " << ret << endl;
    
    	ret = q.enqueue(4);
    	cout << "enqueue result: " << ret << endl;
    
    	cout << endl;
    }
    
    int main(void) {
    	test();
    	test2();
    
    	return 0;
    }

    输出结果:

    enqueue result: 1
    enqueue result: 1
    enqueue result: 1
    dequeue result: 1
    enqueue result: 1
    
    enqueue result: 1
    enqueue result: 1
    enqueue result: 0
    dequeue result: 1
    enqueue result: 1

     

    展开全文
  • 问题:由于字符串内容为空的时候,会出输入空格通过的情况,因此在vue通过数组长度的方式进行判空; 逻辑:先把msg以空格拆分成数组,然后拼接起来,判断字符串的长度,如果长度为0,就是没有输入内容,如下: ...

    判断input输入内容是否为空格

    问题:由于字符串内容为空的时候,会出输入空格通过的情况,因此在vue通过数组长度的方式进行判空;

    逻辑:先把msg以空格拆分成数组,然后拼接起来,判断字符串的长度,如果长度为0,就是没有输入内容,如下:

    if(msg.split(" ").join("").length === 0){}

    判断空对象

    if(JSON.stringify(msg) === '{}'){}
    if(Object.keys(msg).length === 0){}

    undefined判断

    if(typeof(msg) == 'undefined'){}

    null判断

    if(!msg && typeof(msg) !== 'undefined' && msg != 0) {}
    

    去除空格的方法:

    msg.trim(); //去掉首尾空格
    msg.replace(" ",""); // 去除所有空格,包括首尾、中间
    msg.replaceAll(" ", ""); // 去掉所有空格,包括首尾、中间
    msg.replaceAll(" +","");  // 去掉所有空格,包括首尾、中间
    msg.replaceAll("\\s*", ""); // 可以替换大部分空白字符, 不限于空格 ;

    去除换行符:

    str.replace(/\ +/g, ""); // 去除 空格
    str.replace(/[\r\n]/g, ""); // 去除 换行符

    如若对您有所帮助,点个一键三连 ~Thanks♪(・ω・)ノ (✪ω✪) ᕦ(・ㅂ・)ᕤ!!!

    展开全文
  • 循环队列判满判空的两种方式

    千次阅读 2019-05-18 09:31:00
    在循环队列中,Q.front表示对头,Q.rear表示队尾。因为队列大小是有限的,所以在队列指针移动的时候,会出现到头的情况,这时候需要指针...在这种结构下,当出现队列和队列的情况,这两种情况是一样的,Q.rear...

      在循环队列中,Q.front表示对头,Q.rear表示队尾。因为队列大小是有限的,所以在队列指针移动的时候,会出现到头的情况,这时候需要指针回到起点。

    所以入队时Q.rear=Q.rear+1%Maxsize,出队时,Q.front=Q.front+1%Maxsize.而如果一个队列是如下这种结构

     

    • 在这种结构下,当出现队列满和队列空的情况,这两种情况是一样的,Q.rear=Q.front.为空,一直移除,Q.front一直与rear接近在这种结构下,当出现队列满和队列空的情况,这两种情况是一样的,Q.rear=Q.front.为空,一直移除,Q.front一直与rear接近,入队时,一直增大rear,直到等于front。在这种情况下,是无法判断谁是空,谁是满,所以有了另外的一些小处理。

    • 在这两种结构下都是队列满,但是第二种是Q.rear指向空,下一位是Q.front才代表队列满。所以牺牲了一个空间,而这种情况下,Q.rear=Q.front代表队列空,也就区分开了,还可以把Q.front指向空下一位是第一个元素,这样的话,就会出现Q.front下一位是Q.rear代表空,而Q.rear=Q.front代表队列满,这与刚刚的方式是相反的。

    转载于:https://www.cnblogs.com/cold-windy/p/10884685.html

    展开全文
  • 最近代码走查,讨论到数组判空,正好整理一下,记录一下不同数据类型判空方式! 一、String类型数据  String类型数据判空我们一般需要判断是否是 null 或者 "";  例如 String str = null; 对于str...
  • Kotlin判空

    2019-06-28 15:14:51
    Java判空 public class TestJava { public void test(String data) { if (data != null) { Log.d("TestJava", "TestJava"); } } public void testArray(ArrayList<String...
  • Map 的判空正确做法 isEmpty Null == map Map 判空误区 String 的判空 首先我先对 NPE(NullPointerException) 做出一个我自己理解的说法, 当你试图用一个空对象去调用它的方法的时候就会抛出 NPE 。 现在平时...
  • 对象判空 Watermark watermark = new Watermark(); <#if watermark != null && watermark != ‘’></#if> 队列判空 List ArticleArea = articleAreaService.getName(); <#if ArticleArea?? &...
  • bean 判空 的工具类判空

    千次阅读 2018-12-03 11:18:00
    判断对象是否存在ObjectUtils.isEmpty(ids)对象之间的属性拷贝BeanUtils.copyProperties();...String 常用的一些判空的工具 StringUtils.isBlank集合判空 CollectionUtils.isEmpty(speciList) 转载于:https://ww...
  • 常见字符串判空和数组判空

    千次阅读 2018-04-23 10:03:28
    字符串,判断不为空和不为“”,在此之前最好把对象也进行判空处理,防止空指针异常if (null != username &amp;&amp; !"".equals(username) &amp;&amp;...)数组判空,判断不为空,且长度...
  • 在 js 中,字符串为会有这么几种形式,"",null,undefined,如果在已知变量为空串的情况下可以直接采用 if (string.length == 0) 这种形式,今天总结一下常用的几种方法,方便下次查阅。 1.1、typeof | null | ''...
  • 背景:程序中经常会出现指针异常,如 Exception in thread "main" java.lang.NullPointerException 现在提供两个常用的工具类,可以使代码更加简洁和安全 1.安全使用List import org.apache.commons....
  • 循环队列的一些基本操作 ...{ // 构造一个队列Q Q.base = (QElemType *)malloc(MAX_QSIZE*sizeof(QElemType)); if (!Q.base) // 存储分配失败 exit(OVERFLOW); Q.front = Q.rear = 0; } void Des
  • 判空工具类

    2019-07-18 17:19:54
    package ... import java.util.Collection; import java.util.Map; /** * 判空工具类 * Created by foxsand on 2017/9/27. */ public class EmptyUtil { //Suppress default constructor for no...
  • Java 优雅判空的方法

    2020-10-29 13:54:49
    为了避免 NullPointerException 出现,我们经常会进行如下操作。 if (object != null) { object.do(); } 那么每次使用一个不确定的对象,都需要进行一次...当然我们可以使用 JDK8 提供的 Optional 来避免判空,但是
  • java中判空

    2019-10-20 13:09:37
    类型判空 1、int 在初始化的时候=0,使用0==a判断 int a = 0; if (0 == a) { System.out.println(true); } 2、Integer 初始化为null。 Integer a1 = null; if(a1==null){ System...
  • 关于js判空

    2019-03-05 16:27:28
    js一直不怎么会,然后今天遇到判空很无奈,网上看到了这位草木物语大大的讲解,瞬间清晰 https://www.cnblogs.com/ooo0/p/6511723.html 对于那些网上说typeof(xxx)===‘undefined’ 可以同时判断undefined和null的...
  • js判空的方法

    万次阅读 2017-01-14 21:38:37
    1、判断对象为null的方法var x = ...使用if (typeof(x)== “undefined”)判空时,只有x为undefined时,才返回true。 使用if(typeof(x) != “object”)判空时,只有x为null时,才返回false。 使用if(x==null)判空时,x
  • 指针判空

    千次阅读 2018-08-23 17:44:10
    指针判空 代码中遇到了太多判空的处理,真的绕晕了 整理一下 - 指针 - 数组 - NULL - ‘\0’ - ‘\r’ - ‘\n’ 空指针 空指针不指向任何实际的对象或者函数 char *ptr = NULL; char *p1 = 0; ...
  • mybatis判空

    千次阅读 2018-07-11 17:33:15
    ibatis中有标签判空 mybatis中只有写&amp;lt;if test=&quot;companyName != null and companyName !=''&quot; &amp;gt;判空 还可以引用外部方法 &amp;lt;if test=&quot;@org.apache....
  • java-各种类型判空

    2019-11-12 09:47:28
    集合判空 import org.springframework.util.CollectionUtils; CollectionUtils.isEmpty(list) 字符串判空 StringUtils.isEmpty("") public static boolean isEmpty(String input) { if(input == null || input...
  • Scala判空处理

    2020-04-21 00:08:33
    判空, 建议使用row.isNullAt(index) get字符串类型:如果为空则为null 判空建议用:StringUtils.isEmpty() (出现""的情况) 总结:获取值用getAsT 判空用row.isNullAt 以及StringUtils.isEmpty() ...
  • 循环队列: 结构: typedef struct { ElemType *data; //数据域 int front; //队头 int rear; //队尾 下标代替指针 ...判空 判断等式是否成立: Q.front == Q.rear 判队 判队 因为循环队列会空出来一个位置...
  • Java List判空详解

    千次阅读 2020-03-01 16:59:00
    Java List判空、字符串判空 1.List判空 在写Java程序的时候,常见就是List判空问题,程序一旦未判空就会出现空异常; 方法一: @Test void Test() { List<String> list = new ArrayList<>(); if...
  • DB2判空函数

    千次阅读 2017-12-19 19:46:58
    1. 输入参数为字符类型,且允许为的,可以使用COALESCE(inputParameter,'')把NULL转换成'';  2. 输入类型为整型,且允许为的,可以使用COALESCE(inputParameter,0),把转换成0;  3. 输入参数为字符...
  • 判空我推荐StringUtils.isBlank

    千次阅读 2020-05-18 10:27:22
    在我们日常开发中,判空应该是最常用的一个操作了。因此项目中总是少不了依赖commons-lang3包。这个包为我们提供了两个判空的方法,分别是StringUtils.isEmpty(CharSequence cs)和StringUtils.isBlank(CharSequence ...
  • 智能指针判空

    2020-05-20 20:31:17
    智能指针判空 1、智能指针封装整个类,是该类指针。要利用该类中的方法,必须先对该智能指针进行判空。 例如: { 、、、 Profile::Type _NumEdges;//多边形边数 }; typedef SharedHandle<...
  •  作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。  不过NullPointerException对于很多猿们来说,也是Exception家族中最亲近的一员了。  为了...
  • ios判空操作

    2018-04-20 17:09:07
    本人是一枚OCer,由于Object-C兼容C/C++编程,当遇到字符串判空时,就会出现很多的情况,有2类:c/c++风格的空字符串;OC风格的空字符串,经常遇到的数据处理问题典型的有app端接收到后台数据判空操作、数据库的...
  • freemark如何判空容错

    2016-01-15 20:41:58
    freemark如何判空容错呢? freemark是什么? freemark是java后台的模板语言 如果模板使用vm中没有的变量就会报错 怎么办呢? 针对使用场景分为两种:(1)用于页面显示<td><span class="info-date">${old_order_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,181
精华内容 30,472
关键字:

判空判满