尾插法建立单链表以输入9999截止C语言代码
时间: 2024-09-15 14:10:12 浏览: 45
尾插法建立单链表是一种常见的单链表操作方式,它指的是在链表的尾部进行插入操作。在C语言中,使用尾插法建立单链表通常涉及到以下步骤:定义链表结构体,创建链表头节点,然后循环接收用户输入的数据,每次输入一个数据后创建一个新节点,并将其插入到链表的尾部,直到输入特定的结束标志(比如9999)为止。
下面是使用尾插法建立单链表的C语言示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 数据域
struct Node *next; // 指针域,指向下一个节点
} Node;
// 创建一个新节点
Node* createNode(int data) {
Node *newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("内存分配失败\n");
exit(1);
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 尾插法建立单链表
Node* createListByTailInsertion() {
Node *head = createNode(0); // 创建一个头节点,数据域不使用
Node *tail = head; // 尾指针,初始时指向头节点
int data;
while (1) {
scanf("%d", &data);
if (data == 9999) { // 输入9999时停止插入
break;
}
Node *newNode = createNode(data);
tail->next = newNode; // 将新节点插入到链表尾部
tail = newNode; // 更新尾指针
}
return head;
}
// 打印链表
void printList(Node *head) {
Node *current = head->next; // 跳过头节点
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
// 主函数
int main() {
printf("请输入数字,输入9999结束:\n");
Node *list = createListByTailInsertion();
printList(list);
// 释放链表内存
Node *current = list;
Node *temp;
while (current != NULL) {
temp = current;
current = current->next;
free(temp);
}
return 0;
}
```
这段代码首先定义了链表节点的结构体,然后通过`createNode`函数创建新节点。`createListByTailInsertion`函数实现了尾插法建立单链表的逻辑,当输入为9999时停止插入,并返回链表的头节点。`printList`函数用于打印链表中的数据。最后在`main`函数中,用户输入数据,程序输出链表,并在结束前释放了链表占用的内存。
阅读全文