//1.创建带头结点的单链表(尾插法) LinkList createTail(char*);
时间: 2024-10-24 22:02:43 浏览: 85
在C语言中,创建带头结点的单链表(也称为动态链表)并使用尾插法通常涉及以下几个步骤:
1. 定义结构体表示链表节点,包含数据域和指向下一个节点的指针:
```c
typedef struct Node {
char data; // 存储字符的数据域
struct Node* next; // 指向下一个节点的指针
} Node;
```
2. 创建一个函数,接受一个字符指针作为参数,返回链表头结点的指针。这个函数首先分配一个新的节点,然后将其设置为头结点,同时初始化`next`指针指向空(NULL):
```c
Node* createTail(char* str) {
if (str == NULL) return NULL; // 如果传入的字符串为空,直接返回NULL
// 分配新的节点内存
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) { // 内存分配失败时返回NULL
perror("Memory allocation failed");
return NULL;
}
// 初始化新节点的数据域
newNode->data = *str;
// 设置头结点的 next 指针
newNode->next = NULL; // 头结点的 next 通常是空指针
// 如果字符串不为空,继续处理剩余的字符
if (*str != '\0') {
Node* current = newNode; // 当前节点初始化为新节点
while (*(++str)) { // 遍历字符串,直到遇到'\0'为止
Node* newNode = (Node*)malloc(sizeof(Node)); // 分配新节点
if (newNode == NULL) {
free(current); // 释放当前已分配的节点,然后退出循环
perror("Memory allocation failed");
return NULL;
}
newNode->data = *str;
newNode->next = current->next; // 将新节点的 next 指向当前节点
current->next = newNode; // 更新当前节点的 next 指针
current = newNode; // 移动到新插入的节点
}
}
return newNode;
}
```
阅读全文