#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
struct Node { // 定义结点结构体
int data;
Node* next;
};
typedef Node* list; // 所谓单链表,就是指向头结点的指针
list Init(); // 创建并返回带头结点的空链表
void PushFront(list l, int data); // 在单链表的最前面插入一个数值域为data的节点
void PrintList(list l); // 打印单链表
void Reverse(list l); // 单链表逆序
int main() {
list l = Init(); // 创建并初始化一个带头结点的单链表
for (int i = 1; i <= 9; ++i) // 把1~9依次插入到单链表的最前面
PushFront(l, i);
PrintList(l); // 9->8->7->6->5->4->3->2->1
Reverse(l); // 逆序
PrintList(l); // 1->2->3->4->5->6->7->8->9
}
// 创建并返回带头结点的空链表
list Init() {
Node* p = new Node{ 0,nullptr }; // 创建头结点,数值域为0,指针域为空
return p;
}
// 打印单链表
void PrintList(list l) {
Node* p = l->next; // p指向第一个节点
while (p != nullptr) { // 当p不为空
printf("%d", p->data); // 输出p的数值域
p = p->next; // p指向下一个节点
if (p) printf("->"); // 如果有下一个节点,输出箭头
}
printf("\n");
}
// 在单链表的最前面插入一个数值域为data的节点
void PushFront(list l, int data) {
Node* p = new Node{ data, l->next };
l->next = p;
}
void Reverse(list l) {
请填写代码
}