【数据结构】基础知识点整理(3)

本文深入探讨了字符常量、转义字符的概念,详细解析了字符串的定义与链表存储方式,并通过实例修正了一段字符串倒序代码,同时介绍了next数组的求解方法及XML解析中的节点校验技巧。

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时,需要校验节点是否闭合,如必须有与之对应,用栈数据结构实现比较好。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值