用c语言创建链表,完成如下操作: (1)用头插法创建一个结点数据元素类型为字符型的链表,并将数据元素进行输出 (2)用尾插法创建一个结点数据元素类型为字符型的链表,并将数据元素进行输出 (3)创建一个以升序排列、结点数据元素类型为整型的链表,并将数据元素进行输出
时间: 2024-09-26 20:05:45 浏览: 55
采用字符类型为元素类型和二叉链表为存储结构,实现抽象数据类型二叉树。
在C语言中,我们可以使用结构体和指针来创建链表。这里分别演示如何使用头插法、尾插法以及插入排序创建相应的链表。
**(1)头插法创建字符型链表:**
```c
#include <stdio.h>
typedef struct Node {
char data;
struct Node* next;
} Node;
// 创建新节点
Node* create_node(char data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 头插法插入数据
void insert_at_head(Node** head, char data) {
Node* newNode = create_node(data);
newNode->next = *head;
*head = newNode;
}
// 输出链表
void print_list(Node* head) {
while (head != NULL) {
printf("%c -> ", head->data);
head = head->next;
}
printf("NULL\n");
}
int main() {
Node* head = NULL;
insert_at_head(&head, 'A');
insert_at_head(&head, 'B');
// 更多的数据插入...
print_list(head); // 输出链表
return 0;
}
```
**(2)尾插法创建字符型链表:**
```c
void insert_at_tail(Node** head, char data) {
if (*head == NULL) {
*head = create_node(data);
return;
}
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = create_node(data);
}
```
**(3)创建整型升序链表:**
```c
Node* create_sorted_list(int arr[], int n) {
Node* head = NULL;
for (int i = 0; i < n; ++i) {
Node* newNode = create_node(arr[i]);
if (head == NULL || arr[i] < head->data) {
newNode->next = head;
head = newNode;
} else {
Node* current = head;
while (current->next != NULL && arr[i] > current->next->data) {
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
}
return head;
}
// 添加其他打印函数和main函数,展示并输出排序后的链表
```
每个函数完成后,请记得添加必要的输入数组和主函数来运行这个示例。以上代码展示了基本的链表操作,你可以根据需要修改和扩展它们。
阅读全文