status怎么用顺序表完整代码C语言
时间: 2024-10-15 11:19:33 浏览: 5
在C语言中,顺序表是一种基础的数据结构,它通过连续的内存空间存储元素。如果你想使用数组(在C语言中,我们通常称其为动态数组,因为它们的大小在运行时可以改变)实现一个简单的status顺序表,你可以按照以下步骤编写代码:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc和free函数
// 定义顺序表结构体
typedef struct StatusList {
char* status; // 存储状态的字符指针
int index; // 当前索引
int size; // 序列的大小
int capacity; // 序列的容量
} StatusList;
// 初始化顺序表
StatusList* createStatusList() {
StatusList* list = (StatusList*) malloc(sizeof(StatusList));
list->size = 0;
list->capacity = 5; // 初始容量
list->status = NULL;
return list;
}
// 插入状态到列表
void insertStatus(StatusList* list, const char* status) {
if (list->size == list->capacity) {
list->capacity *= 2; // 当满时,扩大容量
list->status = (char*) realloc(list->status, sizeof(char) * list->capacity);
}
list->status[list->index++] = *status;
list->status[list->index] = '\0'; // 添加字符串结束符
}
// 打印列表
void printStatusList(const StatusList* list) {
printf("Status List:\n");
for (int i = 0; i < list->size; i++) {
printf("%d: %s\n", i, list->status[i]);
}
}
// 删除并返回最后一个插入的状态
char* removeLastStatus(StatusList* list) {
if (list->size > 0) {
char* removed_status = list->status[--list->size];
free(list->status + list->size); // 释放不再需要的空间
list->status = realloc(list->status, sizeof(char) * list->size);
return removed_status;
} else {
return NULL; // 如果列表为空,返回NULL
}
}
int main() {
StatusList* myList = createStatusList();
insertStatus(myList, "New status 1");
insertStatus(myList, "New status 2");
// 更多插入操作...
printStatusList(myList);
char* lastStatus = removeLastStatus(myList);
printf("Removed status: %s\n", lastStatus);
free(myList->status); // 清理内存
free(myList); // 释放整个列表
return 0;
}
```
这个示例展示了如何创建、插入、打印和删除顺序表的基本操作。注意,这是一个简化的版本,实际应用中你可能还需要添加错误处理和更复杂的插入功能。