时间复杂度、数据结构、顺序表和链表

时间复杂度

 部分程序运行所消耗的时间与其数据量的大小有着密切的关系,也有一部分的运行时间和数据量大小的关系微乎其微。以下就是时间复杂度的降序排列。(其中C是指常数大小)

O(c) > O(logn) > O(n) > O(nlogn) > O(n^2) > O(n^3) > O(2^n)

数据之间的关系

1. 逻辑结构

        1. 线性结构
        2.非线性结构

2.存储结构

        1. 顺序存储结构
        2. 链式存储结构
        3. 离散存储
        4. 索引存储

2.1顺序结构

2.1.1顺序表:顺序表在某种程度上与数组有相同的地方,比如顺序表的大小和数量是有限的,并且因为顺序的存在,顺序表是连续的。

以下的代码是顺序表的定义,定义一个结构体,其中包含顺序表存储的数据的首地址,存储数据的个数和最大能够存储的数量。

其中的DataType *pData可以看作是一个数组,用访问下标的方式进行顺序表的遍历、赋值、查询、修改等操作。

值得注意的是在增添或删除顺序表时需要使用malloc和free的方式。

​​​​typedef struct list
{
    DataType *pData;
    int tLen;
    int cLen;
}SeqList;

2.1.2链表

单项链表:链表的节点中存储节点数据和下一个节点的地址,即便链表之间的地址不连续,也可以通过头节点访问到后面节点存储的数据。

双向链表:一个节点存储上一个和下一个节点的地址,这样就可以双向访问(循环访问)。

typedef struct node
{
    DataType Data;
    struct node *pNext;
}LinkNode;

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值