用C语言编写一个链表并且用尾插法插入一个字符串
时间: 2024-12-24 10:24:22 浏览: 0
懒人系列1-基于链表的字符串分割功能实现
在C语言中,我们可以创建一个简单的单向链表结构,并用尾插法(也叫尾部插入法)将一个字符串插入到链表的末尾。首先,我们需要定义链表节点结构体以及一些辅助函数。以下是基本的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义链表节点结构
typedef struct Node {
char* data;
struct Node* next;
} Node;
// 创建新节点并分配内存
Node* createNode(char* str) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->data = strdup(str);
newNode->next = NULL;
return newNode;
}
// 尾插法插入节点
void insertAtEnd(Node** head, char* str) {
if (*head == NULL) {
*head = createNode(str);
return;
}
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = createNode(str);
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%s -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
Node* head = NULL;
char* strToInsert = "Hello, World!";
insertAtEnd(&head, strToInsert);
printList(head);
free(head);
return 0;
}
```
在这个例子中,我们首先定义了一个链表节点,包含数据指针`data`和指向下一个节点的指针`next`。`createNode`函数用于创建新节点并分配内存,`insertAtEnd`函数负责在链表末尾插入一个新的节点,`printList`用于遍历并打印链表内容。在`main`函数中,我们创建了一个空链表,然后插入一个字符串并打印结果。
阅读全文