1.字符常量是用单引号括起来的一个字符。例如: 'a'、'='、'+'等。转义字符是一种特殊的字符常量。转义字符以反斜线""开头,后跟一一个或几个字符。"\09",\0表示后面的字符是八进制数。又出现9所以是非法的。
2.串就是字符串,是一种特殊的线性表,它的每个结点仅由一一个字符组成。串值也可用链表来存储,由于串的数据元素是一个字符,它只有8位二进制数,因此用链表存储时,通常一个结 点中存放的不是一一个字符,而是一个子串,例如:在编辑系统中,整个文本编辑区可以看成是一个串,每一行是 一个子串,构成一个结点。
3.请找出下面代码中的所有错误,说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。
#include "string.h"
int main( )
{
char *src = "hello, world";
char *dest = NULL;
int len strlen(src);
dest = ( char * )malloc( len);
char *d =dest;
char *s = src[len] ;
while (len-- != O)
*d++ I s-- ;
printf("%s", dest);
return O ;
}
正确的代码应如下:
int main( )
{
char *src = "hello ,world";
int len = strlen(src);
char *dest = (char *)malloc(len + 1); //要为\0 分配一个空间
char *d = dest;
char *S = &src[len-1] ; //指向最后一个字符
while(len--!=0)
*d++ = *S-- ;
*d = 0; //尾部要加\0
printf( "%s\n",dest);
free(dest);//使用完,应当释放空间,以免造成内存汇泄露
return 0;
}
4.next数组的求解方法是:第一位的next值为0 ,第二位的next值为1, 后面求解每一位的next值时, 根据前一位进行比较。首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就是前一位的next值加上1 ;如果不等,向前继续寻找next值对应的内容来与前一位进行比较,直到找到某个位上内容的next值对应的内容与前一位相等为止,则这个位对应的值加上1即为需求的next值;如果找到第一位都没有 找到与前一位相等的内容, 那么需求的位上的next值即为1。
5.解析XML时,需要校验节点是否闭合,如必须有与之对应,用栈数据结构实现比较好。