用前插法打印单链表用c语言
时间: 2024-09-13 12:09:03 浏览: 37
前插法打印单链表是指从头结点开始,依次打印每个节点的数据部分,直到链表结束。这种方法通常用于在创建链表的过程中,或者在需要按照与链表相反的顺序输出数据的情况下。下面是一个简单的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) {
newNode->data = data;
newNode->next = NULL;
}
return newNode;
}
// 前插法插入节点到单链表头部
void insertAtHead(Node **head, int data) {
Node *newNode = createNode(data);
if (newNode) {
newNode->next = *head; // 新节点指向前一个头结点
*head = newNode; // 新节点成为新的头结点
}
}
// 前插法打印单链表
void printListAtHead(Node *head) {
if (head) {
// 先递归打印后续节点
printListAtHead(head->next);
// 再打印当前节点的数据
printf("%d ", head->data);
}
}
// 主函数
int main() {
Node *head = NULL; // 初始化链表头指针为NULL
// 使用前插法插入数据
insertAtHead(&head, 3);
insertAtHead(&head, 2);
insertAtHead(&head, 1);
// 打印链表
printf("单链表的前插法打印结果:\n");
printListAtHead(head);
// 释放链表内存(略)
return 0;
}
```
在这个示例中,我们首先定义了链表节点的结构体`Node`,然后创建节点的函数`createNode`,接着实现了前插法插入节点的函数`insertAtHead`,最后是前插法打印单链表的函数`printListAtHead`。在主函数`main`中,我们创建了一个空链表,通过前插法插入了几个节点,并使用`printListAtHead`函数打印出链表中的数据。
阅读全文