线性表——动态顺序表

回顾:静态顺序表

与静态顺序表不同的是它的初始化和动态分配空间,算法和静态顺序表没什么区别唯一区别就在于动态顺序表如果元素满了可以再增加空间

时间复杂度

 平均最好最差
定位Olocate=(1+n)/2Olocate=1Olocate=n
插入Oinsert=n/2Oinsert=1Oinsert=n
删除Oinsert=(n-1)/2Odelete=1Odelete=n


代码如下:

#include <stdio.h>
#define ADD_SIZE 4
#define MAX_SIZE 100

typedef int DataType;
typedef struct List{
    DataType *data;
    int size;
    int Max_Size;
}SeqList;

void initList(struct List *L);//init list
void againMalloc(struct List *L);//malloc list
int Locate(struct List *L,DataType y);//locate the first index by datatype

void main(){
    int i = NULL;
    SeqList List;
    initList(&List);
    for(i=0;i<10;i++){
        List.size++;
        List.data[i] = i;
    }
    printf("%d",Locate(&List,2));
}

//init list
void initList(struct List *L){
    L->Max_Size = MAX_SIZE;
    L->size=-1;
    L->data = (DataType*)malloc(MAX_SIZE*sizeof(DataType));
    if(!L->data){
        exit(1);
    }
    return;
}

//malloc list
void againMalloc(struct List *L){
    DataType *p=(DataType*)realloc(L->data,ADD_SIZE*L->Max_Size*sizeof(DataType));
    if(!p){
        exit(1);
    }
    L->data = p;
    L->Max_Size=ADD_SIZE*L->Max_Size;
    return;
}

//locate the first index by datatype
int Locate(struct List *L,DataType y){
    int i=NULL;
    for(i=0;i<L->size;i++){
        if(L->data[i] == y){
            return i;
        }
    }
    return -1;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值