码迷,mamicode.com
首页 > 其他好文 > 详细

反转链表

时间:2014-05-26 03:13:18      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:数据结构   算法   

思路:1、反转后头结点变化;2、注意链表可能断裂的情形

#include <iostream>
using namespace std;
struct Node {
    int data;
    Node* next;
};
class List{
private:
    int N;
    Node* first;
public:
    int size() { return N; }
    bool isEmpty() { first==NULL; }
    void insert(int val){
        Node* oldfirst=first;
        first=new Node();
        first->data=val;
        first->next=oldfirst;
        N++;
    }
    void print(){
        Node* p=first;
        while(p){
            cout<<p->data<<" ";
            p=p->next;
        }
        cout<<endl;
    }

    void reverse(){
        if( first==NULL || first->next==NULL ) return;
        Node* p=first;
        Node* pPrev=NULL;

        while(p!=NULL){
            Node* pNext=p->next;
            if(pNext==NULL){
                first=p;
            }
            p->next=pPrev;
            pPrev=p;
            p=pNext;
        }
    }
};
int main(){
    List* l=new List();
    for(int i=0;i<10;i++){
        l->insert(i);
    }
    l->print();
    l->reverse();
    l->print();
    return 0;
}


反转链表,布布扣,bubuko.com

反转链表

标签:数据结构   算法   

原文地址:http://blog.csdn.net/dutsoft/article/details/26738919

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!