易截截图软件、单文件、免安装、纯绿色、仅160KB

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;
      


相关文档:

C头文件相互包含的问题

     在C++中,关于CPP的头文件互相包含的问题很让人头疼,其实我们谁也不愿意弄的结构混乱,难以理解,但有时又是有必须的。
     假定当前有两个头文件分别为 A.h  和 B.h,内容分别如下:
     A.h内容为:
     #ifndef  ......

求方程ax^2+bx+c=0的根(函数)

#include<stdio.h>
#include<math.h>
float x1,x2,disc,p,q;
int main()
{
void greater_than_zero(float,float);
void equal_to_zero(float,float);
void smaller_than_zero(float,float);
float a,b,c;
printf("\ninput a,b,c:");
scanf("%f,%f,%f",&a,&b,&c) ......

win7上的c和asm互调用

    最近在研究操作系统,《自己动手写操作系统》上第5章讲了asm和c函数之间互调用,目的是使用c来写操作系统内核的代码,毕竟用汇编写代码还是很费时间的事。
    配置Linux开发环境实在是太麻烦,要装虚拟机,还要配置老半天。于是就想能都在windows环境下实现互调用,很自然的想到了ming ......

C程序:使用 googletest 测试框架

googletest C/C++ 测试框架非常好用,介绍及下载请看  http://code.google.com/p/googletest/
//============================================================================
// 使用 googletest 测试框架
//============================================================================

// Returns n! ......

C程序:确定一个整数的计算机内部表示中有几个"1"

/*
注意不断右移判断最低位是1有多少个的算法是错误的,
因为根据GNU C/C++的实现来看,负数是带符号填充进行右移的,所以如果是负数,该算法会死循环。
变通办法:Java可以用>>>逻辑右移位操作符,C/C++可以强制转换成无符号整数再处理
下面的程序是正解。其中num &= (num - 1) 会消除num的最小位置的"1" ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号