设为首页 加入收藏

TOP

C++ 递归和非递归实现链表逆序
2015-11-21 00:57:17 来源: 作者: 【 】 浏览:1
Tags:实现

测试环境:vs2010 windows7

逆序分别采用递归调用和链表头插法实现逆序。

具体代码如下:

?

#include
  
   
#include
   
     using namespace std; class LinkList { private: struct Node { struct Node *next; int value; }; Node *phead; void reverse_use_recursion(Node *pnode) { if(pnode==nullptr||pnode->next==nullptr) { phead=pnode; return; } reverse_use_recursion(pnode->next); pnode->next->next=pnode; pnode->next=nullptr; } public: LinkList() { phead=nullptr; } void initLinkList() { cout<<初始化链表以-1结束<
    
     >tmp; while(tmp!=-1) { if(phead==nullptr) { phead=new Node; phead->next=nullptr; phead->value=tmp; ptmp=phead; }else { ptmp->next=new Node; ptmp=ptmp->next; ptmp->value=tmp; ptmp->next=nullptr; } cin>>tmp; } } void print() { Node *pnode=phead; while(pnode!=nullptr) { cout<
     
      value<
      
       next; } } void clear() { Node *pnode=phead; while(pnode!=nullptr) { Node *ptmp=pnode; pnode=pnode->next; delete ptmp; } phead=nullptr; } void reverse_recursion()//采用递归逆序 { Node *pnode=phead; reverse_use_recursion(pnode); } void reverse_recycle()//采用链表的头插入法实现逆序 { Node *pnode=phead; phead=nullptr; Node *ptmp; while(pnode!=nullptr) { if(phead==nullptr) { phead=pnode; ptmp=pnode; pnode=pnode->next; ptmp->next=nullptr; } else { ptmp=phead; phead=pnode; pnode=pnode->next; phead->next=ptmp; } } } ~LinkList() { this->clear(); } }; int main() { LinkList li; li.initLinkList(); li.print(); li.reverse_recycle(); li.print(); li.reverse_recursion(); li.print(); system(pause); return 0; } 
      
     
    
   
  
\

?

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 5280 Senior's Array 最.. 下一篇[C++设计模式] decorator 装饰者..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: