zoukankan      html  css  js  c++  java
  • 数据结构学习记录_2019.02.22

    • 数组的表示的方法:

    (1)结构数组存储非零项(二元数组)

    (2)链表存储非零项:每个结点包含系数和指数两个数据域以及一个指针域,coef-expon-link

    typedef struct PolyNode *Polynomial;
    struct PolyNode
    {
        int coef;
        int expon;
        Polynomial link;
    }
    • 线性表(List):同类型数据元素构成的有序序列的线性结构;
    • 关于typedef:

       typedef  int  elemtype;------为某一些类型自定义名称,即为int类型起名字为elemtype;

      typedef struct LNode *List;//为LNode结构起别名为List(且List为指针类型); 
      struct LNode//定义结构类型LNode; 
      {
          ElementType Data[MAXSIZE];
          int Last;
      }
      struct LNode L;//由结构类型LNode 来定义变量L; 
      List PtrL;       //定义指针类型的结构变量PtrL;
    • 访问结构中元素:L.Data[i]
    • 访问指针结构中元素:PtrL->Data[i]
    • L=(linklist)malloc(sizeof(struct lnode));

    为你的结点L动态分配内存
    你前面结构体是否这样定义的
    typedef struct lnode
    { ...数据项
    }*linklist;
    函数的原型extern void *malloc(unsigned int num_bytes)
    (linklist)是你定义的这种struct lnode这种类型的指针,也可以写成(struct lnode*)malloc(...)
    因为如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL
    其中sizeof是取你定义的结构体取其总的字节数,即malloc后的括号内是要分内内存空间的大小
    用sizeof函数获取
    而整个分配的返回值是你定义结点*L的指针 也就是L

    • free(s):释放s节点所占用的空间;
    • 线性表的链式存储:即把逻辑相邻的元素通过“链”建立起逻辑关系,而不要求物理上相邻;(插入、删除不需要修改数据元素,只需要修改链)
    • 广义表(Generalized List):线性表的推广,多重链表,表中元素不仅可以是单元素,也可以是另一个广义表;(例子:二元多项式)
    • 多重链表:链表中的指针可能同时隶属于多个链,结点的指针域有多个;(但有两个指针域的链表不一定是多重链表,比如双向链表不是多重链表)
    • 例:二位数组的表示

    (1)用二位数组表示:缺点:数组的大小要提前确定,稀疏矩阵会造成大量的存储空间浪费;

    hello world~
  • 相关阅读:
    使用RPC的接口创建账户同时购买内存并为其抵押CPU和NET资源
    使用RPC的接口创建账户
    【移动安全基础篇】——21、Android脱壳思路
    插件
    NGUI 优化
    影子
    优化文章索引
    MVC
    《你不常用的c#之XX》
    CMake
  • 原文地址:https://www.cnblogs.com/Bran-don/p/10419397.html
Copyright © 2011-2022 走看看