第二章 :线性表

由于线性表中的数据类型相同,因此计算机可以通过快速找到对应数据。

 

一.线性表的顺序存储--也叫顺序表

sizeof(int) = 4 ,返回字节数;

1.静态书序表就是数组

2.动态数组自定义一个线性表,可以扩展空间的线性表

#include <stdlib.h>
#define Initize 10 //初始化时候数据长度
typedef struct{
    int *data; //数据区
    int MaxSize; //属性区,最大size
    int length; //当前长度
}MyList;

int main()
{
    MyList *mylist;
    InitList(mylist);
    IncreaseSize(mylist,5);
    return 0;
}

void InitList(MyList &L) //初始化
{
    L->data = (int *)malloc(sizeof(int)*Initize);
    L->MaxSize = Initize ;
    L->length = 0;//没写入之前只能是0    
}
void IncreaseSize(MyList &L,int len) //扩展空间
{
    int *p = l->data;
    L->data = (int *)malloc(sizeof(int)*(l->MaxSize+len));
    for(int i=0;i<l->length;i++)
    {
        l->data[i] = p[i]; //把之前的数据搬到新的空间
    }
    L->MaxSize = MaxSize+len;
    free(p);    
}

特点:

1.随机访问,可以在O(1)时间找到第i个元素

2.插入元素复杂,不方便

3.逻辑上相邻的数据元素在物理上也相邻。

链表

一种前插的插入方法,

前插是一定不可能

核心理念就是先建立一个空结点,将该空节点插入p的后端,然后将p中的数据向后移动到新的结点中,把新数据放入老的p结点中,这样只是更换了p中的数据没有剪断p,虽然我们不知道前面的结点,但是前面的结点还是能找到p。时间复杂度O(1)

 删除结点也有类似操作,但是删除的结点是尾结点时有BUG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值