【C语言】线性表-顺序表

顺序表:

特点:

  1. 表中的元素的逻辑顺序和物理顺序都是相同的
  2. 顺序表的最大的特点是随机访问,即通过首地址和元素序号可以在O(1)找到指定的元素
  3. 顺序表的存储密度高,每一节点只存储数据元素
  4. 顺序表逻辑上相邻的元素的物理上也相邻,所以插入和删除操作需要移动大量元素

( 注意点:线性表中的元素位序是从1开始的,而数组中的元素的下标是从0开始的)

静态分配的情况下:

结构体的定义:
#define MaxSize 10 //定义顺序表最大长度
typedef struct {
	ElemType data[MaxSize];//定义顺序表的元素类型
	int length;//定义数组的长度
}SqList;//定义别名

动态分配的情况下:

结构体的定义:
#define MaxSize 10
typedef struct {
	ElemType *data; //定义指针以及元素类型
	 int length;
}SqList://定义别名
SqList.data = (ElemType)*malloc(sizeof(ElemType)*InitrSize);//进行空间的初始化

基本操作:

插入:

bool adddata(SqList *L,int i,int e){
    if (i<1||L->length+1<i){
        printf("存储的位序不正确,请及时调整");
        return false;
    }
    if (L->length>=Maxsize){ //存储空间已经满了
        printf("存储空间已满");
        return false;
    }
    for (int j = L->length; j >= i ; j--) {
        L->data[j] = L->data[j-1];//将前面的值赋给后面的位置;
    }
    L->data[i-1] = e;
    L->length++;//每插进入一个值,长度也相对应增加;
    return true;
};

删除:

bool deletedata(SqList *L,int i){
    int e = L->data[i-1];
    if (i<1||L->length<i){
        printf("存储的位序不正确,请及时调整\n");
        return false;
    }
    for (int j = i; j < L->length; j++) {
        L->data[i-1] = L->data[i];
    }
    L->length--;
    printf("删除的是第%d个,数值为%d\n",i,e);
    return true;
}

按位查询:

bool checkdata(SqList *L,int i){
    if (i<1||L->length<i){
        printf("存储的位序不正确,请及时调整\n");
        return false;
    }
    printf("你所查询的位序数据为%d\n",L->data[i-1]);
}

改:

bool chengedata(SqList *L,int i,int e){
    if (i<1||L->length<i){
        printf("存储的位序不正确,请及时调整\n");
        return false;
    }
    L->data[i-1] = e;
    printf("顺序表中的第%d位已经调整为%d\n",i,e);
}

打印顺序表:

void printfdata(SqList *L){
    for (int i = 0; i < L->length ; i++) {
        printf("%d\t",L->data[i]);
    }
    printf("\n");
    printf("目前顺序表中的个数为%d\n",L->length);
}

以上都是个人自学数据结构的所得,欢迎提意见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值