反转链表?

reverse a linked list?(反转链表?)

本文介绍了反转链表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试颠倒以下链接列表的顺序,我已经这样做了,但是颠倒的列表似乎没有打印出来.我哪里错了?

Im trying to reverse the order of the following linked list, I've done so, But the reversed list does not seem to print out. Where have I gone wrong?

//reverse the linked list
    #include <iostream>
    using namespace std;

    struct node{
        int number;
        node *next;
    };

    node *A;

    void addNode(node *&listpointer, int num){
        node *temp;
        temp = new node;
        temp->number = num;
        temp->next = listpointer;
        listpointer = temp;
    }

    void reverseNode(node *&listpointer){
        node *temp,*current;
        current = listpointer;
        temp = new node;
        while (true){
            if (current == NULL){
                temp = NULL;
                break;
            }
            temp->number = current->number;
            current = current->next;
            temp = temp->next;
        }
        listpointer = temp;
    }

    int main(){
        A = NULL;
        addNode(A,1);
        addNode(A,2);
        addNode(A,3);

        while (true){
            if (A == NULL){break;}
            cout<< A->number << endl;
            A = A->next;
        }
        cout<< "****" << endl;
        reverseNode(A);

        while (true){
            if (A == NULL){break;}
            cout<< A->number << endl;
            A = A->next;
        }

        cout<< "****"<< endl;

        return 0;
    }

推荐答案

嗯,我注意到的第一件事就是你在做什么

Well, the first thing I notice is that you are doing

temp = 新节点

然后,在每次互动中:

temp = temp->next

temp = temp->next

但你永远不会分配 temp->next

but you are never assigning temp->next

因此,当您最终覆盖列表指针时,您肯定会返回一些有趣的值.

so when you finally override the list pointer you are surely giving back some funny value.

这篇关于反转链表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:反转链表?

基础教程推荐