注意一定要自己手动实现所有代码,不要光听不写!!!
线性表的模板
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int *elements; //元素数组
int capacity; //总的容量大小
int size; //元素总数
}ConsequenceList;
void Creat_ConsequenceList(ConsequenceList * list,int capacity)
//创建一个容量capacity固定的顺序表
{
list->elements = (int *)malloc(sizeof(int) * capacity);
list->capacity = capacity;
list->size = 0;
}
void Destory_ConsequenceList(ConsequenceList* list)
//删除顺序表
{
if (list->elements)
{
free(list->elements);
list->elements = NULL;
}
}
int GetSize_ConsequenceList(ConsequenceList * list)
//获取元素的个数
{
return list->size;
}
//增加元素
void Add_ConsequenceList(ConsequenceList* list,int index,int element)
{
if (index < 0 || index > list->capacity) //下标不合法
{
printf("不合法的下标索求");
return;
}
if (index == list->capacity) //表明此时需要扩容
{
int *New_elements=realloc(list->elements, sizeof(int) * list->capacity * 2);//扩容一倍
list->elements = New_elements;
list->capacity *= 2;
}
for (int i = list->size; i > index; i--) //数组整体往后挪
{
list->elements[i] = list->elements[i - 1];
}
list->elements[index] = element;//修改对应下标的值
list->size++;
}
//删除元素
void Delete_ConsequenceList(ConsequenceList* list, int index)
{
if (index < 0 || index >= list->size) //下标不合法
{
printf("不合法的下标索求");
return;
}
for (int i = index; i < list->size; i++)
{
list->elements[i] = list->elements[i + 1];//整体往前覆盖
}
list->size--;
}
//修改元素
void Change_ConsequenceList(ConsequenceList* list, int index, int element)
{
if (index < 0 || index >= list->size) //下标不合法
{
printf("不合法的下标索求");
return;
}
list->elements[index] = element;
}
//查找元素
void Find_ConsequenceList(ConsequenceList* list, int element)
{
int index;//用来存储寻找元素的下标
for (int i = 0; i < list->size; i++)
{
if (element == list->elements[i])//找到了
{
index = i;
printf("第%d的值为%d\n", index, list->elements[index]);
return;
}
}
printf("找不到对应的元素\n");
}
int main()
{
ConsequenceList list;
Creat_ConsequenceList(&list, 1);
for (int i = 0; i <10; i++)
{
Add_ConsequenceList(&list, i, i * 10);
printf("%d %d\n", i, list.elements[i]);
}
printf("Size:%d\n", list.size);
Find_ConsequenceList(&list, 50);
Change_ConsequenceList(&list, 4, 80);
Delete_ConsequenceList(&list, 8);
for (int i = 0; i < list.size; i++)
{
printf("%d %d\n", i, list.elements[i]);
}
system("pause");
return 0;
}