判断单链表中是否存在环


Posted in 面试题 onJuly 16, 2012
#include “stdafx.h”
typedef char eleType; // 定义链表中的数据类型
typedef struct listnode { // 定义单链表结构
eleType data;
struct listnode *next;
}node;

node *create(int n) { // 创建单链表,n为节点个数
node *p = (node *)malloc(sizeof(node));
node *head = p; head->data = ‘A’;
for(int i=’B; i p = (p->next = (node *)malloc(sizeof(node)));
p->data = i;
p->next = NULL;
}
return head;
}

void addCircle(node *head, int n) { // 增加环,将链尾指向链中第n个节点
node *q, *p = head;
for(int i=1; p->next; i++) {
if(i==n) q = p;
p = p->next;
}
p->next = q;
}

int isCircle(node *head) { // 这是笔试时需要写的最主要函数,其他函数可以不写
node *p=head,*q=head;
while( p->next && q->next) {
p = p->next;
if (NULL == (q=q->next->next)) return 0;
if (p == q) return 1;
}
return 0;
}

int main(int argc, char* argv[]) {
node *head = create(12);
addCircle(head, 8); // 注释掉此行,连表就没有环了
printf(“%d\n”, isCircle(head));
}

Tags in this post...

面试题 相关文章推荐
运行时异常与一般异常有何异同?
Jan 05 面试题
super()与this()的区别
Jan 17 面试题
介绍一下SQL注入攻击的种类和防范手段
Feb 18 面试题
光声世纪笔试题目
Aug 25 面试题
介绍一下.NET构架下remoting和webservice
May 08 面试题
override和overload的区别
Mar 09 面试题
什么是反射
Mar 17 面试题
介绍一下linux文件系统分配策略
Feb 25 面试题
ShellScript面试题一则-ShellScript编程
Jun 24 面试题
GWT的应用有哪两种部署模式
Dec 21 面试题
什么是GWT的Entry Point
Aug 16 面试题
Java中的异常处理机制的简单原理和应用
Apr 27 面试题
我能否用void** 指针作为参数, 使函数按引用接受一般指针
Feb 16 #面试题
广州御银科技股份有限公司试卷(C++)
Nov 04 #面试题
不开辟用于交换数据的临时空间,如何完成字符串的逆序
Dec 02 #面试题
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
May 09 #面试题
*p++ 自增p 还是p所指向的变量
Jul 16 #面试题
编码实现字符串转整型的函数
Jun 02 #面试题
华为慧通笔试题
Apr 22 #面试题
You might like
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
javascript this用法小结
2008/12/19 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
JavaScript类库D
2010/10/24 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
python杀死一个线程的方法
2015/09/06 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
师范毕业生自荐信
2013/10/17 职场文书
2015年话务员工作总结
2015/04/29 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python