女程序员吧 关注:8,226贴子:58,876
  • 7回复贴,共1

最近找工作 会看到一些比较好的网络资料

只看楼主收藏回复

写出来 和大家分享


1楼2014-08-19 11:33回复
    排序算法 很不错的 总结
    http://blog.csdn.net/han_xiaoyang/article/details/12163251


    2楼2014-08-19 11:34
    回复


      3楼2014-08-19 11:35
      回复
        查找算法 顺序表查找 二分查找 BST AVL
        哈希表查找
        http://blog.csdn.net/v_july_v/article/details/6256463


        4楼2014-08-19 15:25
        回复
          #include <stdio.h>
          #include <stdlib.h>
          #define NULLKEY -32768
          typedef struct
          {
          int *addr;
          int len; // 当前数据元素个数
          }hashtable;
          //typedef struct hashnode *hashtable;
          int m; //总表长 全局变量
          int init_hashtable(hashtable *H)//不是查找表,改变了表,就要用指针
          {
          int i;
          m =12;
          H->len = m;
          H->addr = (int *)malloc(m*sizeof(int));
          for(i=0;i<m;i++)
          H->addr[i] = NULLKEY;
          return 1;
          }
          int hash(int key)
          {
          return key%m; //除留余数法
          }
          int insert_talble(hashtable *H,int key)
          {
          int i;
          if(H->len=0) return 0;
          int value = hash(key);
          while(H->addr[value]!=NULLKEY)//不为空 冲突了
          value = (value+1)%m; //开放定址法解决冲突
          H->addr[value] = key;
          return 1;
          }
          int search_table(hashtable H,int key)
          {
          int i;
          if(H.len=0) return 0;
          int value = hash(key);
          while(H.addr[value]!=key && H.addr[value]!=NULLKEY)//不是要找的值,或者存了个别的比如16冲突的值
          {
          value = (value+1)%m; //开放定址法解决冲突
          if(H.addr[value] == NULLKEY || value==hash(key))
          {
          printf("find fail %d!\n",key);
          return 0;
          }
          }
          printf("find and the addr is:%d.\n",value);
          }
          void print_hashtable(hashtable H)
          {
          int i;
          for(i=0;i<m;i++)
          printf("%6d",H.addr[i]);
          printf("\n");
          }
          int main()
          {
          hashtable H;
          init_hashtable(&H);
          insert_talble(&H,24);
          print_hashtable(H);
          insert_talble(&H,2);
          print_hashtable(H);
          insert_talble(&H,4);
          print_hashtable(H);
          insert_talble(&H,12);
          print_hashtable(H);
          search_table(H,4);
          search_table(H,16);
          return 0;
          }


          5楼2014-08-19 17:17
          收起回复
            如果两个正数相加溢出,结果一定是负数;如果两个负数相加溢出,结果一定是正数;一正一负相加,无论结果是正是负都不可能溢出。(signed)
            #include<stdio.h>
            #include<stdlib.h>
            #defineINT_MAX (2147483647) //(2^31-1)
            #defineINT_MIN (-2147483648) //(-2^31)
            //为什么上面不能用2^31这种格式呢 因为#define是按照字符串复制过去的 根本不会计算
            int myatoi(constchar* str)
            {
            if(str == NULL) return 0;
            const unsigned int maxTest = INT_MAX /10;
            const unsigned int maxDigit = INT_MAX %10;
            int sum = 0;
            int sign = 0;
            unsigned int digit;
            while(*str == * *)
            str++;
            if(*str==*-*||*str==*+*)
            {
            if(*str==*-*)
            sign = -1;
            else
            sign = 1;
            str++;
            }
            while(*str >= *0* && *str<=*9*)
            {
            digit = *str - *0*;
            printf("the digitis:%d.\n",digit);
            if(sum>maxTest || (sum ==maxTest)&&(digit>maxDigit))
            {
            printf("hehe.\n");
            return sign>0?INT_MAX:INT_MIN;
            }
            sum = sum*10 + digit;
            printf("the sumis:%d.\n",sum);
            str++;
            }
            return sum*sign;
            }
            intmain()
            {
            char str[] = " -2638";
            printf("the str %s atoiis:%d.\n",str,myatoi(str));
            return 0;
            }


            6楼2014-08-20 11:35
            回复
              好人一路平安


              IP属地:安徽9楼2014-09-14 21:18
              回复