#include <iostream>
using namespace std;
struct node{
int data;
node* next;
};
node* reverse_link(node* head)
{
if(head==NULL || head->next==NULL)
return head;
node* pre;
node* n, *nn;
pre = head;
n = pre->next;
pre->next = NULL;
while(n!=NULL)
{
nn = n->next;
n->next = pre;
pre = n;
n = nn;
}
return pre;
}
node* reverse_link_recursive(node* head)
{
if(head == NULL)
return NULL;
if(head->next == NULL)
return head;
node* n = head->next;
node* h = reverse_link_recursive(n);
n->next = head;
head->next = NULL;
return h;
}
void print(node* head)
{
while(head != NULL)
{
cout<<head->data<<" ";
head = head->next;
}
cout<<endl;
}
int main(void)
{
int n = 10;
node* h = new node[n];
int i;
for(i=0; i<n; i++)
{
h[i].data = i+1;
h[i].next = &h[i+1];
}
h[n-1].next = NULL;
print(&h[0]);
node* head;
head = reverse_link_recursive(&h[0]);
print(head);
return 0;
}
链表反转,递归,迭代
最新推荐文章于 2022-08-14 21:30:14 发布