首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
单链表有环,是指单链表的最后一个结点的指针指向了链表中的某个结点(通常单链表的最后一个结点的指针域是为空的)。试编写算法判断单链表是否存在环。 (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释
单链表有环,是指单链表的最后一个结点的指针指向了链表中的某个结点(通常单链表的最后一个结点的指针域是为空的)。试编写算法判断单链表是否存在环。 (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释
admin
2018-07-17
47
问题
单链表有环,是指单链表的最后一个结点的指针指向了链表中的某个结点(通常单链表的最后一个结点的指针域是为空的)。试编写算法判断单链表是否存在环。
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
选项
答案
(1)算法的基本设计思想: 设置两个指针(slow,fast),初始时都指向头结点,slow每次前进1步,fast每次前进2步。如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。当然,当fast先进入到尾部为NULL,则说明链表中不存在环。 (2)算法的实现如下: bool IsExitsLoop(list *head) { list*slow=head, *fast=head; //定义两个指针 while(fast&&fast—>next) //都不空 { slow=slow—>next; fast=fast—>next—>next, if(slow==fast) //相遇,存在环 break; } return !(fast==NULL||fast—>next==NULL); } 当fast若与slow相遇时,slow肯定没有走遍历完链表,故算法的时间复杂度为O(N),空间复杂度为O(1)。
解析
转载请注明原文地址:https://kaotiyun.com/show/f8Ri777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
最晚到汉武帝时期,出现了我国第一部算学著作(),它记载了用竿标测日影以求日高的方法,从而认识了勾股定理。
关于《荷马史诗》的叙述不正确的是()。
春秋时期的鲁国初税亩和战国时期以商鞅变法为代表的各国变法,在历史上产生了深刻的影响。这些变法的最大作用和产生的最主要的社会后果是()。
世界第一次群众性、政治性的无产阶级革命运动是()。
秦朝的势力到达西南夷后,在今宜宾至昭通一带开通(),并在附近各地设置官吏。
巴黎和会上,英美主张把原德国在山东的权利转让给日本,华盛顿会议又表示支持中国让日本归还山东的要求,英美态度发生变化的根本原因是()。
鸦片战争前中国同英国相比在政治、经济和军事上存在着哪些差距?到19世纪60年代,外来因素使中国社会出现了哪些变化?变化中进步的主流是什么?
试编写一个非递归算法,实现求以二叉链表存储的二叉树中q结点的祖先。
已知散列函数为H(key)=key%11,处理冲突的方法为二次探测法,探测的序列为:1,-1,4,-4,…,j2,-j2(j<=m/2)。当di>0时,Hi=(H(key)+di)%m当di<0时,Hi=(H(key)+di+m)%m散列
—棵二叉树的后序遍历序列为DABEC,中序遍历序列为DFBAC,则先序遍历序列为()。
随机试题
关于心室肌Ca2+通道的叙述,错误的是
患者,男,60岁,20年前有黄疸,近2个月来自感体力不支,明显消瘦,右季肋胀痛。查体:轻度黄疸,面部有蜘蛛痣,腹膨隆,肝肋下2cm,剑突下4cm,质硬,压痛,脾肋下3cm,移动性浊音阳性。
为探索高血压的病因,将高血压患者与非高血压患者按年龄、性别、职业以及文化程度进行配比,然后调查,比较两组既往饮酒的情况,这种研究属于
信息系统是指以计算机进行信息处理为基础的()。
销售产品一批,价款100000元,增值税17000元,货款尚未收回。该笔业务编制的会计分录是()。
简述学生心理发展的基本特征。
根据党的十九大报告内容,下列说法正确的是()。
将40千克浓度16%的溶液蒸发一部分水,化为浓度20%的溶液。应蒸发掉水多少千克?()
设A,B为三阶矩阵,且A~B,且λ1=1,λ2=2为A的两个特征值,|B|=2,求
A、 B、 C、 A
最新回复
(
0
)