首页 > 代码库 > 反转链表(递归与非递归)
反转链表(递归与非递归)
1 #include<iostream> 2 using namespace std; 3 4 typedef struct LNode{ 5 int data; 6 LNode* next; 7 }LNode; 8 //非递归方法, 9 LNode* reverse(LNode* head)10 {11 if(!head||!head->next)12 return head;13 LNode *pre,*cur,*next;14 pre = head;15 cur = head->next;16 next = cur->next;17 pre->next = NULL;18 while(next!=NULL)19 {20 next = cur->next;21 cur->next = pre;22 pre = cur;23 cur = next; 24 }25 head = pre;26 return head;27 }28 //递归反转链表29 LNode* reverseRecursion(LNode* currnode)30 {31 if(!currnode->next||!currnode)32 {33 return currnode;34 35 }36 else{37 38 LNode* temp = reverseRecursion(currnode->next);39 LNode* nextnode = currnode->next;40 nextnode->next = currnode;41 currnode->next = NULL;42 return temp;//返回当前节点43 }44 45 }46 //创建链表47 LNode* createList(int n)48 {49 LNode* head, *temp,*pre;50 head = NULL;51 head = new LNode;52 head->data =http://www.mamicode.com/ n;53 pre = head;54 while(n--)55 {56 temp = new LNode;57 temp->data =http://www.mamicode.com/ n;58 pre->next = temp;59 pre = temp;60 }61 pre->next = NULL;62 return head;63 64 }65 66 int main(){67 int n =6;68 LNode * list1,*list2,*temp1,*temp2;69 list1 = createList(n);//初始链表70 temp1 = list1;71 while(n--)72 {73 cout<<"init node data:"<<temp1->data<<endl;74 temp1 = temp1->next;75 }76 cout<<"head node data:"<<list1->data<<endl;77 //list2 = reverse(list1);78 list2 = reverseRecursion(list1);79 n = 6;80 temp2 = list2;81 while(n--)82 {83 cout<<"reverse node data:"<<temp2->data<<endl;84 temp2 = temp2->next;85 }86 return 0;87 }
反转链表(递归与非递归)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。