C语言关于顺序表的整理
一、结构体的创建
struct list
{
int* data;
int length;
int capacity;
};
二、顺序表初始化函数
开辟一个结构体空间,并对其中的数据开辟空间来储存元素
#define Type int
//顺序表初始化
struct list* list_init()
{
struct list* temp = (struct list *)malloc(sizeof(struct list));
temp->data = (Type *)calloc(MAX_SIZE, sizeof(Type));
temp->length = 0;
temp->capacity = MAX_SIZE;
return temp;
}
三、顺序表增删查改功能函数的实现
1、元素逐个增加
//元素逐个增加
void list_add(struct list * arr,int elem)
{
if (arr->length < arr->capacity)
{
arr->data[arr->length++] = elem;
}
else
printf("error");
}
2、指定位置插入元素
void list_insert(struct list * arr, int index,int elem)
{
if (arr == NULL)
{
printf("顺序表为空");
}
if (arr->length < arr->capacity)
{
int i = arr->length++;
for (; i >= index; i--)
{
arr->data[i] = arr->data[i-1];
}
arr->data[i] = elem;
}
}
3、删除全部元素
void list_clear(struct list * arr)
{
if (arr == NULL)
{
printf("顺序表为空");
}
for (int i = 0; i < arr->length; i++)
{
arr->data[i] = 0;
}
arr->length = 0;
}
4、删除指定位置元素
void list_delete(struct list * arr ,int index )
{
if ( arr == NULL)
{
printf("顺序表为空");
}
int i = index-1;
for (; i < arr->length-1; i++)
{
arr->data[i] = arr->data[i + 1];
}
arr->length--;
}
5、检查顺序表是否为空
void list_empty(struct list * arr)
{
if (arr == NULL || arr->length ==0)
{
printf("顺序表为空");
}
else
printf("顺序表不为空");
}
6、修改指定位置的值
//元素修改
void list_alter(struct list * arr,int index,int elem)
{
if (arr == NULL)
{
printf("顺序表为空");
}
arr->data[index - 1] = elem;
}
7、元素的输出
//输出顺序表元素
void list_out(struct list * arr)
{
if (arr == NULL)
{
printf("顺序表为空");
}
for (int i = 0; i < arr->length; i++)
{
printf("%d\t", arr->data[i]);
}
printf("\n");
}
8、释放顺序表空间
//释放空间
void list_free(struct list * arr)
{
if (arr != NULL)
{
if (arr->data != NULL)
{
free(arr->data);
}
free(arr);
}
}
四、顺序表各函数的调用
void test()
{
struct list* arr1 = list_init();
int elem,index;
printf("请输入要输入的元素");
for (int i = 0; i < 10; i++)
{
scanf("%d", &elem);
list_add(arr1,elem);
}
list_out(arr1);
printf("请输入增加的元素和位置:\n");
scanf("%d %d",&elem, &index);
list_insert(arr1, index,elem);
printf("请输入要删除元素的位置:\n");
scanf("%d", &index);
list_delete(arr1, index);
list_out(arr1);
list_free(arr1);
}
int main()
{
test();
return 0;
}
本文为复习所写,函数经测试都可以用,用兴趣的可以调用一下,有错误的地方欢迎大佬指正