顺序表(各种操作合集)
顺序表的两种创建方式:
方式1:根据函数的返回值创建
- 通过
返回值
返回所申请的内存空间的首地址
;
- 示例代码:
list_t *create_seq_list_1(){
list_t *p = (list_t *)malloc(sizeof(list_t));
if(NULL == p){
printf("内存分配失败\n");
exit(-1);
}
memset(p,0,sizeof(list_t));
return p;
}
- 注意事项:
- 1.分配完内存地址空间后,一定要检查
内存分配是否成功
;
- 2.若内存分配失败,需要使用
shell命令exit(-1)退出
;
方式2:根据地址传参创建
int create_seq_list_2(list_t **p){
if(NULL == p){
printf("入参为NULL\n");
return -1;
}
*p = (list_t *)malloc(sizeof(list_t));
if(NULL == *p){
printf("内存分配失败\n");
return -1;
}
memset(*p,0,sizeof(list_t));
return 0;
}
- 注意事项:
- 1.所传入的形参必须是
二级指针变量
,因为二级指针用来存储一级指针变量的地址
,即所申请的顺序表内存空间的地址
;
- 2.形参传入到创建顺序表的功能函数后,一定要做
入参合理性检查
;
- 3.同方式1一样,分配完内存地址空间后,一定要检查
内存分配是否成功
;
顺序表的两种插入方式:
方式1:尾插法
int insert_seq_list_1(list_t *seq_list,int data){
if(NULL == seq_list){
printf("入参为NULL\n");
return -1;
}
if(N == seq_list->count){
printf("顺序表已满,插入失败\n");
return -1;
}
seq_list->a[seq_list->count].num = data;
seq_list->count++;
return 0;
}
- 注意事项:
- 1.形参传入到具有插入数据元素功能的函数后,需要做
入参合理性检查
;
- 2.还需要判断此时
顺序表所存储的数据元素是否已满
;
- 3.本示例代码中的
count是计数的变量
,每次插入一个数据元素后,需要加1
,此处易忽略
;
方式2:任意位置插入新数据