排序 散列

1.读取字符串

方法一:gets(char *s)

从标准输入读入一个完整的行,直到遇到换行符。它会用空字符'\0'取代行尾的换行符'\n'。例如:gets(str);

方法二:while((str[i++]=getchar())!='\n')

若平台不支持gets,可以用getchar一个一个读直到读到换行为止。最后的换行符也保存到字符串里了。

方法三:fgets(char *s,int size,FILE *stream)

fgets()从stream中读字符存到s所指空间,直到出现换行符、读到文件尾或是读了size-1个字符为止。fgets()会把换行符存储到字符串里。例如:fgets(name, MAX, stdin); 

2. 散列

最常用的做法是直接把读入的数作为数组下标(即散列函数是恒等变换)来统计该数的属性。先打表(处理输入),再查表(输出结果)。若需统计次数则表为int型,若只需是否出现则用bool型。int、char直接就能做下标,字符串需写一个很短的哈希函数转换为唯一的下标(类似于进制转换)。

3.c++中全局变量自动初始化为该类型的0值(如bool型为false),局部变量必须自己初始化。散列中的表要记得初始化。

4.sort(首元素地址,尾元素地址的下一个地址,比较函数(选填))

默认升序,若要降序则cmp函数return a>b。

 

你可能感兴趣的:(PAT,字符串读取,变量初始化,散列,sort,c++)