分享

链表逆序

 千杯不醉004 2011-03-19
两种代码。
一种利用结构体
#include <iostream>
using namespace std ;
void main()
{
struct Node
{
   Node* next;
   int c ;
   Node(int i){c=i;};
};
Node* head = new Node(0);
Node* tail = head ;
for (int i = 1 ; i<10 ; i++)
{
   Node* p = new Node(i);
   head->next = p;
   head = p;
}
head->next = NULL;
    
Node* _next = NULL;
Node* p;
do
{
   p = tail->next;
   tail->next = _next;
   _next = tail ;
   tail = p;
}while(tail->next != NULL);
tail->next = _next ;

while(NULL != tail )
{
   cout<<tail->c<<endl;
   tail=tail->next;
}
}

另一种就是利用类

#include <iostream>
using namespace std;
class node
{
public:
    node(int x):data(x),next(0){}
    int data;
    node* next;
};
node* reverse(node* head)
{
if(0==head)
   return head;
node* __next=head->next;
if(0!=__next)
{
   node* n=reverse(__next);
   __next->next=head;
   head->next=0;
   return n;
}
else
   return head;
}
int main()
{
    node* head=new node(0);
    node* tail=head;
    for(int i=1;i<10;i++)
    {
        node* p=new node(i);
        tail->next=p;
        tail=p;
    }
    head=reverse(head);
    while(0!=head)
    {
        cout<<head->data<<endl;
        head=head->next;
    }
    return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约