C程序:判断链表是否有环
/*
这是个常见的面试题哦,总之我面试的时候遇到过, 当时没有答上来
回去后想出来下面的方法一,该法还有个附加优点,可以判断出链表在哪个地方形成环的(即如果想拆开这个环,从哪个地方断开)。
后来知道还有个经典算法,即使用两个指针,一快一慢向前试探,如果最终重合则链表有环,果然优美的算法。
*/
#include <stdio.h>
typedef struct list {
int data;
struct list *next;
} LIST;
/* Method 1: check the occurrence of p->next from head to p */
int check_circle_1(LIST *head) {
LIST *p = head, *q= NULL;
if (p == NULL)
return 0;
while (p->next) {
/* check whether p points to itself */
if (p->next == p) {
return 1;
}
/* check the occurrence of p->next in head to p */
q = head;
while (q != p) {
if (q == p->next) {
return 1;
}
q = q->next;
相关文档:
在Linux用c编程,很多时候都会碰到结构体这个概念,尤其是使用指针访问结构体成员。(下面的文字介绍,请参考代码理解)
1. 使用一个新运算符:->,这个运算符有一个连接号(-)后跟一个大于符号(>)组成
&nbs ......
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.spri ......
第二章 数据类型
一、数据类型分类
1 联合类型
2 函数类型
3 数量类型
3.1算术类型
① 基本数据类型
整型(包括char)
浮点型 ......
大家好,这里有IBM的三个长期需求:均是需要2年以上相关工作经验,其中Java以及Testing需要英语可以交流,C/Unix不需要语言。
Java 大连
描述:Java programming, knowledge in J2SE, SWT/JFace, XML. Eclipse programming, knowledge in eclipse architecture. Clear understanding of plugin development. Hands-on exp ......
/*
思路:递归算法
前0..cur-1位置上已经排好,当前cur位置取一个和前面都不一样的,然后递归处理后面的。
*/
/* 输出1,2,3,..,n的排列数 */
#include <stdio.h>
#include <assert.h>
#include <malloc.h>
void p(int n)
{
extern void _p(int n, int cur, int *a);
int *a;
a = ......