rInsert建立单链表,在链表的尾部(rear)插入随机产生的10个英文字符,这样得到的链表输出结果是与插入元素的顺序一致并 用C语言表示
时间: 2024-10-15 13:14:06 浏览: 29
第三章:树-2021-31
在C语言中,创建一个单链表并在尾部插入随机英文字符可以分为以下几个步骤:
1. **定义结构体**:首先定义一个`Node`结构体,用于存储数据和指向下一个节点的指针。
```c
typedef struct Node {
char data;
struct Node* next;
} Node;
```
2. **初始化链表头指针**:创建一个全局链表头指针,开始时为`NULL`。
```c
Node* head = NULL;
```
3. **生成随机字符数组**:创建一个包含10个随机英文字符的数组。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 引入时间库,用于生成随机数
char random_char() {
const char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int index = rand() % (sizeof(charset) - 1);
return charset[index];
}
void generate_random_chars(char* chars, int size) {
srand(time(0)); // 设置随机数种子
for (int i = 0; i < size; i++) {
chars[i] = random_char();
}
}
```
4. **插入随机字符到链表尾部**:遍历链表,直到找到尾节点,并插入新的字符。
```c
void insert_at_rear(Node** head, char* random_chars) {
if (*head == NULL) {
*head = (Node*)malloc(sizeof(Node));
(*head)->data = random_chars[0];
(*head)->next = NULL;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = (Node*)malloc(sizeof(Node));
current->next->data = random_chars[0];
current->next->next = NULL;
}
}
```
5. **打印链表**:遍历链表并输出所有节点的数据。
```c
void print_list(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%c -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
```
6. **主函数**:生成随机字符数组,然后调用上述函数插入到链表尾部并打印链表。
```c
int main() {
char random_chars[10];
generate_random_chars(random_chars, sizeof(random_chars));
insert_at_rear(&head, random_chars);
print_list(head);
return 0;
}
```
运行这个程序,你会看到链表按照插入顺序输出随机生成的英文字符。
阅读全文