使用C语言,建立一个存储字符的线性表,从键盘输入线性表中元素,如果输入为“@”,则中止输入;运行结果
时间: 2024-11-20 21:39:23 浏览: 11
在C语言中,你可以创建一个动态数组作为字符线性表,并从键盘循环输入元素,直到用户输入特殊字符"@"为止。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc用于动态内存分配
#define MAX_SIZE 50 // 定义线性表的最大容量
typedef struct CharNode {
char value;
struct CharNode* next;
} CharListNode;
// 创建新的节点
CharListNode* createNode(char val) {
CharListNode* newNode = (CharListNode*)malloc(sizeof(CharListNode));
newNode->value = val;
newNode->next = NULL;
return newNode;
}
// 将新元素添加到链表末尾
void appendToList(CharListNode** head, char val) {
CharListNode* newNode = createNode(val);
if (*head == NULL) {
*head = newNode;
} else {
CharListNode* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 从键盘读入线性表元素
void inputList(CharListNode** head) {
char input;
CharListNode* current = *head;
while ((input = getchar()) != '@' && input != EOF) {
appendToList(head, input);
if (current == NULL) {
current = *head;
}
current = current->next;
}
}
// 打印线性表
void printList(CharListNode* head) {
CharListNode* temp = head;
while (temp != NULL) {
printf("%c -> ", temp->value);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
CharListNode* head = NULL;
inputList(&head);
// 输出线性表
printList(head);
free(head); // 释放内存
return 0;
}
```
在这个程序中,我们首先定义了一个结构体 `CharListNode` 用于存储单个字符和下一个节点的地址。`inputList` 函数会从键盘读取字符,遇到 "@" 或者文件结束(EOF,当输入文件结束时会发生),就停止接收输入。最后,我们使用 `printList` 函数打印出线性表的所有元素。
运行这个程序时,输入字符直到输入 "@" 结束,然后你会看到线性表中所有的输入字符。
阅读全文