反向链表? [英] reverse a linked list?

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

问题描述

我试图逆转以下链表的顺序,我这样做,但颠倒的列表似乎没有打印出来。我在哪里错了?

  //反向链表
#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-> gt; 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->号<< endl;
A = A-> next;
}
cout<< ****< endl;
inverseNode(A);

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

cout<< ****< endl;

return 0;
}


解决方案

通知是您正在进行



temp = new node



temp = temp-> next



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



所以当你终于覆盖列表指针,你肯定会回馈一些有趣的价值。


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 = new node

and then, on every interaction:

temp = 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.

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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆