写一个c语言的顺序表头插法的函数,用typedef struct{ ElemType *elem;//指示动态分配的指针 int listsize;//顺序表最大容量 int length; } List;
时间: 2024-09-29 09:13:37 浏览: 45
在C语言中,我们可以编写一个头插法的函数用于动态顺序表的操作,这里假设`ElemType`是你自定义的数据类型。下面是一个简单的例子,展示了如何创建、插入以及处理顺序表(线性表):
```c
#include <stdlib.h>
// 自定义结构体类型
typedef struct {
ElemType* elem; // 指向动态内存的元素指针
int listsize; // 顺序表的最大容量
int length; // 当前元素的数量
} List;
// 动态分配顺序表空间并插入元素
void insertAtHead(List** list, const ElemType item) {
if (*list == NULL) { // 如果表为空,初始化
*list = (List*)malloc(sizeof(List));
(*list)->elem = (ElemType*)malloc(sizeof(ElemType) * (*list)->listsize);
(*list)->length = 0;
} else if ((*list)->length == (*list)->listsize) { // 列表满,需要扩大容量
(*list)->elem = (ElemType*)realloc((*list)->elem, sizeof(ElemType) * 2 * (*list)->listsize); // 双倍扩容
(*list)->listsize *= 2;
}
(*list)->elem[(*list)->length] = item; // 插入元素到头
(*list)->length++; // 长度加一
}
// 示例如何使用
int main() {
List* myList = NULL;
insertAtHead(&myList, 5); // 插入数字5
insertAtHead(&myList, 10); // 插入数字10
// ...后续处理...
return 0;
}
```
阅读全文