c语言用struct建立了一个链表,怎么用scanf为链表输入字符串
时间: 2024-10-23 20:07:09 浏览: 15
在 C 语言中,为链表结构体输入字符串通常涉及到动态内存分配以及节点的创建。假设你已经定义了一个包含字符串的链表节点结构,你可以这样做:
```c
#include <stdio.h>
#include <stdlib.h> // 引入 malloc 和 free 功能
// 定义链表节点结构
typedef struct Node {
char str[50];
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建链表函数
Node* createNode(char* input) {
Node* newNode = (Node*)malloc(sizeof(Node));
strcpy(newNode->str, input);
newNode->next = NULL; // 初始化新节点为 NULL,表示它不是列表的一部分
return newNode;
}
void insertIntoList(Node** head, char* input) {
Node* newNode = createNode(input);
if (*head == NULL) { // 列表为空,直接将新节点作为头结点
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) { // 找到列表的末尾并插入
temp = temp->next;
}
temp->next = newNode;
}
}
int main() {
Node* head = NULL; // 初始化链表头部为 NULL
printf("请输入第一个字符串(输入 'q' 结束): ");
char input[50];
while (fgets(input, sizeof(input), stdin) && strcmp(input, "q") != 0) { // 从标准输入逐行获取字符串
insertIntoList(&head, input);
printf("已添加 '%s'\n", input);
}
// 清理链表(如果需要)
Node* current = head;
while (current != NULL) {
Node* temp = current;
current = current->next;
free(temp);
}
return 0;
}
阅读全文