C语言:逻辑运算符的使用

1.题目

给定一个链表,判断链表中是否有环。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

进阶:

你能用 O(1)(即,常量)内存解决此问题吗?

2.代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool hasCycle(struct ListNode *head) {
    if(head==NULL) return false;
    struct ListNode *fast,*slow;
    fast=slow=head;
    while(fast&&(fast->next)){  //
        fast=fast->next->next;
        slow=slow->next;
        if(fast==slow) return true;
    }
    return false;
}

3.问题

在while 循环中,当判断条件为fast&&(fast->next)时,程序可以通过;判断条件为(fast->next)&&fast时不能通过。这是真么原因,哪位大佬能帮忙解决一下,不胜感激!!!

1个回答

&&有个优化,那就是当前者不满足,就不需要考虑后者。

fast&&(fast->next),这个是对的
(fast->next)&&fast,为什么这个会是错的,因为假如fast是NULL,你用->访问next是会直接报错的,所以fast在前面可以避免非法访问

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言逻辑运算符: && 和 ||
1. 简单介绍 && 和 || && 和 || 是逻辑运算符,分别是逻辑与(&&)和逻辑或(||) 1) && (逻辑与):(三种) ① 当逻辑与左边为false(假),则不再进行逻辑与右边的判断,结果为false(假) ② 当逻辑与左边为true(真)则进行右边判断,右边为false(假),结果为false(假) ③ 当逻...
C语言复习--逻辑运算符|| 和&&,!
&& 只有两个条件都为真时,才为真。||只要一个为真,就为真。 逻辑运算符很重要的法则是短路法则。 逻辑运算符的运算顺序都是从左到右计算。 &&  当左侧条件为假时,就不计算右侧。 ||  都左侧条件为真时,就不计算右侧。 另外&& 的优先级要高于||。 1.   int i=0,j=1,k=0; k= ++i || j++;  k=...
C语言 逻辑运算符与逻辑表达式
1.逻辑运算符及其运算规则 (1)C语言提供三种逻辑运算符: && 逻辑与(相当于"同时") || 逻辑或(相当于"或者&amp
C语言逻辑运算符
逻辑运算符 用于判断数据的真假,结果为真或者假逻辑运算符!——非 &&——与 ||——或使用事项1、逻辑表达式中可以包含多个逻辑运算符 比如 !a||a>b2、逻辑运算符的优先级,从高到低依次为 !、&&、||3、运算符&&与操作 如果,左边为假,右边的表达式就无需进行,也不会进行运算 比如a+b<c && c==d如果,a+b>c,表达式的结果为假,右边表达式c==d,不会进行运算
C语言复习1---逻辑运算符
1、设x,y,z ,t  均为int 型变量,执行以下语句后,t的值为: int  main(){   int x,y,z ;   x=y=z=1;   int t=++x||++y&amp;amp;&amp;amp;++z;   cout&amp;lt;&amp;lt;x&amp;lt;&amp;lt;y&amp;lt;&amp;lt;z&amp;lt;&amp;lt;t&amp;lt;&amp;lt;endl;}在VS运行后,结果如图所示: 如果把   int t=++x||++y&amp;am...
【C语言】移位运算符、位运算符、逻辑运算符
C语言中的运算符有很多种,这次我只对其中的移位运算符、位运算符和逻辑运算符做一总结。   *移位运算符*   移位运算符是将数据看成二进制数,对其bit位进行向左或向右移动若干位的运算符。移位运算符包括两种:左移运算符(<< )和右移运算符(>> ),均为双目运算符。第一个运算对象是移位对象,第二个运算对象是所移的二进制位数。   左移运算符(<<)   移位规则:左边“抛弃”,右边补0。如
C语言逻辑运算符,位运算符总结
&amp; | ~ ^ &gt;&gt; &lt;&lt; &amp;&amp; || ! 运算符包括逻辑运算符与位运算符。 逻辑运算符针对的就是真假问题,或者说0 1 问题,也就是bool类型的。 位运算符重点在于位操作,也就是对每一位进行操作。下面逐个介绍。 &amp; 当 &amp; 两边是bool 类型的值时,该运算符作为逻辑运算符。作用如下: 当运算符两边的表达式的...
c语言位运算符与逻辑运算符的区别
&&、||是逻辑运算符,用于从左到右求表达式的真值。假设x=1;y=2;那么x&&y=1;x||y=1; &、|是位运算符,是对x,y进行位运算,x,y取值如上,那么有x&y=0;(x的二进制表示为00,y的二进制表示为10)
C语言学习笔记9——逻辑运算符
&amp;amp;&amp;amp; 和 || 的分析1 : 程序中的短路 在C语言中: || 从左向右开始计算: 当遇到为真的条件时停止计算, 整个表达式为真 所有表达式为假时表达式才为假 &amp;amp;&amp;amp; 从左向右开始计算: 当遇到假的条件时停止运算, 整个表达式为假 所有条件为真时表达式才为真 &amp;amp;&amp;amp; 和 || 的分析2:优先级 在C语言中: 逻辑表达式中, &amp;a...
C语言 逻辑运算符及其优先级
[案例] 说明逻辑表达式的值关系。 main() { int result=0; int num=0; printf(&quot;input a number:&quot;); scanf(&quot;input a number:%d\n&quot;,&amp;amp;num); result=(num&amp;gt;=0)&amp;amp;&amp;amp;(num&amp;lt;10); printf(&quot;(num&amp;gt;=...
关于C语言逻辑运算符的应用
最近在看C语言的一本书《The C programming language(中文版)》,上面有几个关于逻辑运算的小问题比较有意思。你也可以去这个博客上看一下。 这个博客关《The C programming language(中文版)》这本书上习题的答案比较全面。这里主要讲一下C语言逻辑运算符&amp;(与)、|(或)、~(非)、^(异或)。&amp;(与):只有当两个数都为1时,结果才为1。即1&amp;1=1,0&amp;1
c语言输入输出,逻辑运算符。优先级
负数的反码 0表示正,1表示负; 2使用格式化输出函数printf() 掌握格式化输入函数scanf() 掌握单个字符的输入和输出函数getchar()和putchar(),以及getch(); 掌握各种运算符、算术运算符、赋值运算符、复合赋值运算符、关系运算符、逻辑运算符、位运算符 掌握运算符优先级和结合性 3 #include &lt;stdio.h&gt;//stdio.h 是一个文件...
C的逻辑运算符
位逻辑运算符 一、取反~    一元运算符~将每个1变为0,将0变为1。例如:~(10011010)//表达式                                                                                           (01100101)//结果值   假设val是一个unsigned char,已赋值为2.在二进制
C语言笔记 第十五课 逻辑运算符分析
第十五课 逻辑运算符分析 逻辑运算符&amp;amp;&amp;amp;,||和!真的很简单吗? 下面的程序运行结束后,i,j,k的值分别是多少? int i = 0; int i = 0; int i = 0; ++i || ++j &amp;amp;&amp;amp; ++ 结果: i = 1 j = 0 k = 0 15-1 初探逻辑运算符 程序中的短路 ||从左向右开始计算: 当遇到为真的条件时停止计算,整个表达式为真...
【C语言简单说】十二:逻辑运算符&&
总觉得今天更两节就好了=。= ( ̄. ̄) 困。。。( ̄. ̄) \今天我们来加深if的使用,我们来讲解运算符&&和||,一个叫做 与&& 一个叫做 或&&;我们先来说 &&我们先看以下代码:#include<stdio.h> #include<stdlib.h> int main() { int a=1,b=2; if((a==1)&&(b==1)){ pr
【C语言简单说】十三:逻辑运算符||
(+﹏+)~ 更完睡觉=。=这一节我们来说说逻辑或||,其实很简单的,既然你们理解了第一个逻辑与,那么逻辑或就没什么难度了。我们说过逻辑与就像我们的并列关系,例如我们吃了苹果和李子。我们现在的逻辑或呢?逻辑或就是例如我跟你说我吃了苹果或者是李子。这个是个或者的关系,并不是说我两者都吃了。好了我们看代码:#include<stdio.h> #include<stdlib.h> int main()
小朋友学C语言(13):逻辑运算符
逻辑运算符有三种,“&&”(逻辑与)、“||”(逻辑或)和“!”(逻辑非)(一)逻辑与&&“&&”相当于生活中说的“并且”,就是两个条件都同时成立的情况下“&&”的运算结果才为“真”。只要有一个条件不成立,则结果为“假”。 1 && 1 = 1 1 && 0 = 0 0 && 1 = 0 0 && 0 = 0验证程序:#include <stdio.h>int main() { in
C语言逻辑运算符中真假的概念
在C语言逻辑运算符中 对于逻辑表达式的结果,0代表假,1代表真; 在逻辑表达式的运算过程中,0代表假,非0代表真; 例如: 3&&0 结果是 0 1&&0 结果是 0
C语言关系和逻辑运算符与分支语句
一. 关系运算符: 就是用来比较大小的 运算符 名称 >  大于 >= 大于等于 == 等于 小于等于 小于 != 不等于     1. 运算符间不能有空格, 而且顺序不能被颠倒
逻辑运算符的使用
<p>rn <br />rn</p>rn<p>rn <p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Java全部课程</span>,仅售799元(原价7016元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span>rn </p>rn <p>rn 点此链接购买:rn </p>rn <table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span>rn </td>rn </tr>rn </tbody>rn </table>rn</p>rn<span>&nbsp;</span> rn<p>rn <br />rn</p>rn<p>rn Java全程课程的第一阶段,主要讲授java语言基础,涉及变量、流程控制、面向对象、IO流、集合框架、多线程、网络编程,以及常用的MySQL数据库及Java操作数据库的技术JDBCrn</p>
C语言自增自减 比较运算符 逻辑运算符的使用 运算符的优先级
if结构 自增自减自增自减运算符前自增表达式 int num = 1; ++num; 前自增表达式: 在运算时先将自身的值+1, 然后在在取出自身的值作为表达式的结果 后自增表达式int num = 1; num++;后自增表达式: 在运算时先将自身的值取出自身的值作为表达式的结果 然后在自身+1 共性:无论是前自增表达式还是后自增表达式都是将自身的值+1 逗号表达式执行步骤从头到尾的去执行每
C基本算数、逻辑运算符 & && | || ^ ! << >>
&amp;amp;  |  ^ ! &amp;lt;&amp;lt; &amp;gt;&amp;gt;  是位运算符&amp;amp; 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0|  按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^  按位异或 若参加运算的两个二进制位值相同则为0,否则为1~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0&amp;lt;&amp;lt; 左移 用来将一个数的各二进...
黑马程序员——C基础之逻辑运算符
/*  逻辑运算符    && 逻辑与 表示多个条件同时成立    同真为真 一假为假    || 逻辑或 表示当有多个条件是,只要有一个成立即可    一真为真 同假为假    !  逻辑非 取反    真变假 假变真        */ #include
C语言中的逻辑运算符
C语言中的运算符: 算术运算符:加(+)、减(—)、乘(*)、除(/)、取余(%) 关系运算符:&gt;, &gt;=, &lt;, &lt;=, !=, 逻辑运算符:!(非),&amp;&amp;(且),||(或) 赋值运算符:=, +=,*=, /= 例如:a+=3是等价于a=a+3,a/=3等价于a=a/3 其优先级别是算术&gt;关系&gt;逻辑&gt;赋值。 示例程序1:#include &lt;stdio.h&gt;int mai
关于C的逻辑运算符
请高手门指点一下,以下是一道习题里面的作业,运算出来的结果看不明白rn(1)int inum1,inum2,inum3rn [color=#FF0000]inum2=(inum1=10,inum1+5,inum3=10)[/color]rn printf("inum1=%d,inum2=%d,inum3=%d\n",inum1,inum2,inum3);rn结果:inum1=10,inum2=10,inum3=10rnrn(2)int inum=2;rn [color=#FF0000]inum*=inum+=inum++;[/color]rn printf("inum=%d\n",inum);rn结果:inum=25rnrn(3)int inum1,inum2,inum3;rn inum1=inum2=inum3=-1;rn [color=#FF0000]++inum1&&++inum2||++inum3;[/color]rn printf("inum1=%d\tinum2=%d\tinum3=%d\n",inum1,inum2,inum3);rn结果:inum1=0,inum2=-1,inum3=-1rn inum1=inum2=inum3=-1;rn [color=#FF0000] ++inum1||++inum2&&++inum3[/color];rn printf("inum1=%d\tinum2=%d\tinum3=%d\n",inum1,inum2,inum3);rn结果:inum1=0,inum2=0,inum3=0rnrn inum1=inum2=inum3=-1;rn [color=#FF0000] ++inum1&&++inum2&&++inum3[/color];rn printf("inum1=%d\tinum2=%d\tinum3=%d\n",inum1,inum2,inum3);rn结果:inum1=0,inum2=-1,inum3=-1rnrn还请高手们写个运算步骤,本人还是菜鸟,什么都不会,呵呵,在这里先谢谢了~ ~!rn
C语言之逻辑运算符
1.逻辑运算符分析1.1程序中的短路-||从左向右开始计算    ·当遇到为真的条件时停止计算,整个表达式为真    ·当所有条件为假时表达式才为假-&amp;amp;&amp;amp;从左向右开始计算:    ·当遇到为假的条件时停止计算,整个表达式为假    ·当所有条件为真时表达式才为真1.2逻辑表达式中,&amp;amp;&amp;amp;比||具有更高的优先级2.!究竟是什么?小结在程序中的逻辑表达式遵从短路规则在&amp;a...
c/单片机逻辑运算符
单片机学习者的知识必备,帮助你快速融入到单片机的学习环境中。
LUA逻辑运算符OR的使用
function CheckValue(str_value, int_value) local msg; --逻辑运算符的使用 if (int_value < 0) or (str_value == ' ') then msg = 0; else msg = 1; end return msg; end in_str = io.read(); in_int = 1;
关系及逻辑运算符的使用
用通俗易懂的形象比喻方式来学习和理解C#语言的语法基础,去掉冗繁的基础概念知识,通过实际应用讲解C#知识点,让学习者能够真正学会“使用C#”,而不是“学习C#”
操作符:逻辑运算符的使用
【课程特点】<br />rn1、190节大容量课程:包含了Objective-C语言大部分知识点;<br />rn2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会;<br />rn3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;<br />rn4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;<br />rn5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;<br />rn<br />rn【课程内容】<br />rn包含Objective-C语言的基本数据类型,基础语法以及进阶知识。同时还讲解了流程控制、字符串、集合类型、函数和闭包等。此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象类型、错误处理、iOS开发中的常见概念、Xcode操作、多媒体编程、网络编程、数据解析和加密、Sqlite数据库、多线程编程、内购等实用功能也都有涉及!<br />
dart语言学习(十)— 逻辑运算符
运算符 运算符:!、&amp;amp;&amp;amp;、|| 针对布尔类型运算 案例 void main(List&amp;lt;String&amp;gt; args) { bool isTrue = true; print(&quot;!isTrue = ${!isTrue}&quot;); bool isFalse = false; print(&quot;isTrue &amp;amp;&amp;amp; isFalse =${isT...
2.4、逻辑运算符的使用分析
1、int i = 0;      int j = 0;            if ( ++i > 0 || ++j > 0 )      {          printf ("%d\n", i);          printf ("%d\n", j);      }       i = 1;       j = 0; 2、程序中的短路      短路规
逻辑运算符的概念和使用
1、来自清华、北大、北航的实战讲师和上市企业骨灰级大咖授课<br />rn<br />rn2、根据企业需求设计课程,引入主流框架<br />rn<br />rn3、由浅入深,0基础缔造垫脚石,妈妈再也不用担心我的学习<br />rn<div>rn <br />rn</div>
逻辑运算符使用分析
符号的技巧专题二:符号的技巧。包括以下章节: 注释符号 接续符和转义符 单引号和双引号 逻辑运算符使用分析 位运算符分析 ++、–操作符使用分析 优先级和类型转换分析 问题 逻辑运算符&&、||、!=真的很简单吗? #include <stdio.h>int main() { int i = 0; int j = 0; //短路规则:从左向右计算,当遇到条件表达式为真时,就不
JavaScript逻辑运算符的使用技巧
前言 !, &amp;&amp;, || 三个运算符是JavaScript中重要的逻辑运算符,本文将介绍这三个运算符在JavaScript实际编程中的有趣使用技巧。 取反运算符(!) 如果对一个值连续做两次取反运算,等于将其转为对应的布尔值,与Boolean函数的作用相同。 !!x // 等同于Boolean(x) 两次取反就是将一个值转为布尔值的简便写法。 var str='test'; va...
MySQL基础逻辑运算符的使用
<p>rn <p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Java全部课程</span>,仅售799元(原价10374元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span>rn </p>rn <p>rn 点此链接购买:rn </p>rn <table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span>rn </td>rn </tr>rn </tbody>rn </table>rn</p>rn<p>rn <br />rn</p>rn<p>rn Java全程课程的第一阶段,主要讲授java语言基础,涉及变量、流程控制、面向对象、IO流、集合框架、多线程、网络编程,以及常用的MySQL数据库及Java操作数据库的技术JDBCrn</p>
js逻辑运算符的几种使用
console.log(false &amp;&amp; 11)// false 使用&amp;&amp;运算符 如果左边是false就返回左边的数据 如果左边是true 就执行右边的运算 console.log(true &amp;&amp; 11)// 11 console.log(false || 11)// 11 如果使用|| 运算符 左边是false 则执行右边的运算。如果左边是t...
30_MySQL基础_逻辑运算符的使用
<p>n 本教程为授权出品教程n</p>n<p>n <br /></p>n<p>n <span style="color:#404040;">本视频涵盖MySQL核心技术主要知识点,每节知识配套对应练习。主要包含数据库和表的常用操作、约束、视图、存储过程和函数、流程控制结构以及综合运用各种命令实现数据的增删改查操作。本课程的目标是“看得懂、学得会、做得出”,为后续的学习打下夯实的基础。</span>n</p>
WHERE条件之逻辑运算符的使用
King老师精心打造深入浅出MySQL课程,由浅入深的剖析了MySQL的体系架构,MySQL底层架构,深度讲解了MySQL中的常用操作,像数据库相关操作、数据表相关操作,重点讲解了数据相关操作,包括多表联查、子查询、无限极分类等。课程中还介绍了目前主流存储的引擎及其特点与应用场景,后介绍了两款常用的MySQL图形化管理工具!
逻辑运算符
请问哪位高手帮忙解释一下啊,C#中逻辑运算符 按位运算 的 运算过程,谢谢!
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池