100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C语言数据结构线性表顺序存储结构(插入 删除 获取)

C语言数据结构线性表顺序存储结构(插入 删除 获取)

时间:2019-12-27 20:42:13

相关推荐

C语言数据结构线性表顺序存储结构(插入 删除 获取)

一、代码

#include<stdio.h>#define MAXSIZE 20 /*存储空间初始分配量*/#define OK 1#define ERROR 0//元素数据类型,假设为int。typedef int ElemType;//线性表的结构定义typedef struct{ElemType data[MAXSIZE]; /*数组存储数据元素,最大值为MAXSIZE*/int length; /*线性表当前的长度*/}SqList;//状态值,OK表示成功,ERROR表示失败。typedef int Status;/*** 获得线性表的第i个位置的元素* @SqList L 传入要查询的线性表* @int i 线性表的第i个位置* @ElemType *e 元素类型*/ Status GetElem(SqList L, int i, ElemType *e){int status;//如果线性表长度为0,或者是插入位置不再线性表的范围内,则返回错误if(L.length == 0 || i < 1 || i > L.length){status = ERROR;}//如果线性表长度不为0,且插入范围在线性表的正确范围,用*e返回线性表第i个数据的值else{*e = L.data[i-1];status = OK;}return status;}/*** 在线性表的指定位置插入元素 * @SqList *L 所需要插入元素的线性表* @int i 插入的位置* @ElemType e 插入的元素*/Status ListInsert(SqList *L, int i, ElemType e){//状态值表示是否插入成功int status;//线性表已经满了if(L->length == MAXSIZE)status = ERROR;//插入的范围不在线性表内部if(i < 1 || i > L->length + 1)status = ERROR;if(i <= L->length){//把插入位置后面的元素从后面依次往后移动一个单位!for(int k = L->length-1; k >= i; k--){L->data[k+1] = L->data[k];}//在线性表中插入到第i个元素位置后(相当于在数组第i-1个后面插入)即插入位置为iL->data[i] = e;//线性表当前长度增加一位L->length ++;status = OK;}return status;}/*** 删除线性表指定位置的元素* @SqList *L 所要操作的线性表* @int i 删除的位置第i个元素,在数组中是i-1* @ElemType *e 元素类型*/Status ListDelete(SqList *L, int i, ElemType *e){int status;//如果线性表为空,则返回错误if(L->length == 0)status = ERROR;//如果删除的位置不在线性表内,则返回错误if(i < 1 || i > L->length)status = ERROR;//如果删除的不是线性表最后一个位置的元素,则删除位置后所有的元素前移一步if(i<L->length){for(int k = i; k<L->length; k++){L->data[k-1] = L->data[k];}status = OK;}L->length --;return status;}/*** 主函数,用于测试对线性表的操作。*/int main(int argc, char const *argv[]){ElemType myType;SqList myList = {{1,2,3},19};int status = ListInsert(&myList,4,4);//遍历当前的线性表printf("插入后的线性表\n");for(int i = 0; i<myList.length; i++){printf("%d ",myList.data[i]);}printf("\n");status = ListDelete(&myList ,4 ,&myType);//遍历当前的线性表printf("删除后的线性表\n");for(int i = 0; i<myList.length; i++){printf("%d ",myList.data[i]);}return 0;}

二、输出结果

插入后的线性表

1 2 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

删除后的线性表

1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。