正向打印一个单链表的值 逆向打印一个单链表的值用C语言解答
时间: 2024-09-15 13:09:11 浏览: 38
在C语言中,正向打印和逆向打印单链表通常分别通过递归和迭代的方式来实现。
**正向打印单链表:**
```c
void printListForward(struct Node* head) {
if (head == NULL) return; // 空链表
printf("%d ", head->data); // 打印头节点
printListForward(head->next); // 递归调用处理剩余节点
}
```
这里的`struct Node* head`代表链表的头节点。函数首先检查是否为空,若不空则打印当前节点的值,并对接下来的节点继续调用自身。
**逆向打印单链表:**
由于C语言本身没有内置的链表倒序功能,我们需要借助额外的栈或递归来完成。这里我们使用栈来辅助:
```c
void printListReverse(struct Node* head) {
stack_t *s = malloc(sizeof(stack_t));
struct Node *temp = head;
while (temp != NULL) {
push(s, temp);
temp = temp->next;
}
while (! isEmpty(s)) {
printf("%d ", pop(s)->data);
}
free(s);
}
```
这里使用了`stack.h`中的栈结构体`stack_t`和相关的宏函数`push`、`pop`、`isEmpty`。先将所有节点压入栈,再弹出并打印它们。
阅读全文