欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

单链表反转

程序员文章站 2022-03-06 10:08:11
#ifndef MYLIST_H #define MYLIST_H #include class Node { public: Node(int v){value = v;next=NULL;} int value; Node * next; }; class List { public: List... ......
#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();
}