• 数据结构(C语言版)-第4章 串、数组和广义表


    补充:C语言中常用的串运算

    调用标准库函数 #include<string.h>

    串比较,strcmp(char s1,char s2)
    串复制,strcpy(char to,char from)
    串连接,strcat(char to,char from)
    求串长,strlen(char s)

    4.1  串

    串(String)----零个或多个字符组成的有限序列

    image_thumb

    串的存储结构:顺序存储、链式存储

    顺序存储表示

    typedef struct{
       char *ch;      //若串非空,则按串长分配存储区,
                      //否则ch为NULL
       int  length;   //串长度
    }HString;

    链式存储表示

    image_thumb[1]

    #define CHUNKSIZE 80       //可由用户定义的块大小
    typedef struct Chunk{
       char  ch[CHUNKSIZE];
       struct Chunk *next;
    }Chunk;
    
    typedef struct{
       Chunk *head,*tail;      //串的头指针和尾指针
       int curlen;             //串的当前长度
    }LString;
    image_thumb[2]

    串的模式匹配算法:

    image_thumb[3]

    BF算法设计思想:

    image_thumb[5]

    Index(S,T,pos)

    将主串的第pos个字符和模式的第一个字符比较,
        若相等,继续逐个比较后续字符;
        若不等,从主串的下一字符起,重新与模式的第一个字符比较。

    直到主串的一个连续子串字符序列与模式相等 。返回值为S中与T匹配的子序列第一个字符的序号,即匹配成功。
    否则,匹配失败,返回值 0

    int  Index(Sstring S,Sstring T,int pos){
        i=pos;   j=1;
       while (i<=S[ 0 ] && j <=T[ 0 ]){
           if ( S[ i ]=T[ j ]) {++i;  ++j; }
          else{ i=i-j+2;    j=1; }
       if ( j>T[ 0 ])   return   i-T[0];
       else return 0;
    }
    image_thumb[6]
    image_thumb[8]

    KMP(Knuth Morris Pratt)算法


    4.2  数组
    image

    image
    image

    1. 什么是压缩存储?
    若多个数据元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间。
    2. 什么样的矩阵能够压缩?      
    一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。
    3. 什么叫稀疏矩阵?
    矩阵中非零元素的个数较少(一般小于5%)

    4.3  广义表

       广义表(列表):  n ( 大于等于0 )个表元素组成的有限序列,
                                记作LS = (a0, a1, a2, …, an-1)
        LS是表名,ai是表元素,它可以是表 (称为子表),可以是数据元素(称为原子)。
      n为表的长度。n = 0 的广义表为空表。

    广义表与线性表的区别?

    线性表的成分都是结构上不可分的单元素

    是单元素,也可以是有结构的表广义表的成分可以

    线性表是一种特殊的广义表

    广义表不一定是线性表,也不一定是线性结构

    广义表的基本运算

    (1)求表头GetHead(L):非空广义表的第一个元素,可以是一个单元素,也可以是一个子表

    (2)求表尾GetTail(L):非空广义表除去表头元素以外其它元素所构成的表。表尾一定是一个表

    image

  • 相关阅读:
    jQuery dataType指定为json的问题
    C# Post数据和接收简单示例【转】
    搜集的关于领域驱动设计(DDD)的理论知识
    WCF:(400) Bad Request
    关于SQL生成随机字符串
    如何通过禁用按钮避免jQuery.ajax重复请求
    注册自定义HTTP Handlers
    Node.js+Express on IIS
    iframe在IE下不能写cookie的解决
    node.js从全局目录里加载module
  • 原文地址:https://www.cnblogs.com/mohuishou-love/p/10367022.html
Copyright © 2020-2023  润新知