typedef struct LinkNode {
struct LinkNode* next;
int data;
}node;
node* create_node(int data) {
node* link = (node*)malloc(sizeof(*link));
if (link == NULL) {
std::cout << "error\n";
return NULL;
}
link->data = data;
link->next = NULL;
}
node* list_node() {
node* head = create_node(0);
node* p = head;
for (int i = 1; i < 10; i++) {
while (p->next != NULL) {
p = p->next;
}
node* new_node = create_node(i);
p->next = new_node;
p = p->next;
}
return head;
}
void print_link(node* head) {
node* p = head;
while (p) {
std::cout << p->data << " ";
p = p->next;
}
std::cout << "\n";
}
node* reverse(node* head) {
if (!head->next) {
return head;
}
node* ret = reverse(head->next);
head->next->next = head;
head->next = nullptr;
return ret;
}
void print_reverse(node* head) {
if (!head) {
return;
}
print_reverse(head->next);
std::cout << head->data;
}
int main() {
node* list = list_node();
std::cout << "befor link_list :";
print_link(list);
std::cout << "after reverse link_list :";
node* L = reverse(list);
print_link(L);
return 0;
}