• 数据结构学习记录_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~
  • 相关阅读:
    Locale IDs Assigned by Microsoft (zz)
    MFC 版本
    vs macro shortcuts
    关于strassen矩阵乘法的矩阵大小不是2^k的形式时,时间复杂度是否还是比朴素算法好的看法
    团体程序设计天梯赛 L2-016. 愿天下有情人都是失散多年的兄妹
    团体程序设计天梯赛-练习集 L1-031. 到底是不是太胖了
    团体程序设计天梯赛 L3-004. 肿瘤诊断
    团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树
    团体程序设计天梯赛 L1-011. A-B
    团体程序设计天梯赛 L1-010. 比较大小
  • 原文地址:https://www.cnblogs.com/Bran-don/p/10419397.html
Copyright © 2020-2023  润新知