使用C语言,建立一个存储字符的线性表,从键盘输入线性表中元素,如果输入为“@”,则中止输入;
时间: 2024-11-20 09:39:06 浏览: 7
C语言从入门到实战-通过使用C语言来实现线性表的顺序存储
在C语言中,你可以创建一个动态数组或者结构体来实现一个存储字符的线性表。这里我们使用动态数组作为例子。首先,你需要定义一个结构体表示字符,并定义一个函数来处理用户输入。
```c
#include <stdio.h>
#include <stdlib.h> // 包含 malloc 和 free 函数
// 定义结构体表示字符
typedef struct {
char value;
} CharList;
// 动态分配内存并初始化线性表
CharList* create_list(size_t size) {
CharList* list = (CharList*)malloc(size * sizeof(CharList));
for (size_t i = 0; i < size; i++) {
list[i].value = '\0'; // 初始化为空字符,因为我们将用它来表示列表结束
}
return list;
}
// 读取用户输入,添加到线性表中直到遇到 '@'
void input_and_append(CharList* list, int* index) {
printf("请输入字符(输入 '@' 结束): ");
while (getchar() != '@') { // 当读取到 '@' 时跳出循环
list[*index].value = getchar(); // 保存字符
(*index)++;
}
}
int main() {
int index = 0;
CharList* my_list = create_list(10); // 创建一个长度为10的线性表
// 开始输入
input_and_append(my_list, &index);
// 输出线性表
printf("输入的字符线性表:\n");
for (size_t i = 0; i <= index; i++) {
printf("%c ", my_list[i].value);
}
// 清理内存
free(my_list);
return 0;
}
```
在这个程序中,`create_list` 函数用于初始化线性表,`input_and_append` 函数负责读取用户输入并将字符添加到列表中,直到遇到 '@' 为止。当用户输入完成后,`main` 函数会打印出线性表的内容,并记得在程序结束前释放动态分配的内存。
阅读全文