单链表反转

Posted dosomethingyoulike

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表反转相关的知识,希望对你有一定的参考价值。

#ifndef MYLIST_H
#define MYLIST_H
#include <stdio.h>
class Node
{
public:
    Node(int v){value = v;next=NULL;}
    int value;
    Node * next;
};

class List
{
public:
    List(){
        head = tail = NULL;
    }
    void addNode(Node *node){
        if(head==NULL){
            head = node;
        }
        if(tail==NULL){
            tail = node;
        }else{
            tail->next = node;
            tail = node;
        }
    }
    void ReverseList(List * srcList){
        Node * p = srcList->head;
        Node * t = NULL;
        Node * q = NULL;
        while(p){
            t = p;
            p = p->next;
            t->next = q;
            q = t;
        }
        srcList->head = q;
    }
    void printList(){
        Node * p = head;
        while(p){
            printf("value:%d ",p->value);
            p = p->next;
        }
    }

public:
    Node * head,*tail;
};

#endif // MYLIST_H
#include <QCoreApplication>
#include "mylist.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    List * myList = new List();
    for(int i=1;i<=5;i++){
        Node * node = new Node(i);
        myList->addNode(node);
    }
    myList->ReverseList(myList);
    myList->printList();

    return a.exec();
}

 

以上是关于单链表反转的主要内容,如果未能解决你的问题,请参考以下文章

手撕代码之反转单链表

反转单链表

单链表反转

小代码 单链表之反转 然后交错重连+稀疏矩阵

递归-反转单链表 -图解

看一遍就理解,图解单链表反转