在执行反向链表功能

时间:2016-03-13 00:50:17

标签: c++ pointers

我正在尝试保持原始链接列表("开始"位于我的类对象下的头文件中的节点变量)在通过此函数时保持不变,该函数输出我已存储在&#中的链接列表34;开始"以相反的顺序。该函数正常工作,但在while循环中的一个循环之后,我的原始链表变成了一系列无休止的指针,一遍又一遍地指向数字11和21(例如,原始列表包含诸如11,21之类的数字, 35,4,...等,但在while循环中的一个循环之后,它转到11,21,11,21 ......等)。当我调试程序时,我可以确定发生这种情况的时刻是我从以下位置移动调试光标:

next->link = tempStart;

tempStart = next;

我似乎无法确定这种情况的解决方法或解释。如果有人碰巧知道如何解决这个问题,我非常希望听到你要说的话。谢谢。

void IntegerListClass::OutputReverseList(ofstream& fout)
{
int index;

nodePtr tempStart = start;
nodePtr next;
nodePtr current =  NULL;

if (start == NULL)
{
    return;
}

current = start;

current = current->link;

while (current != NULL) 
{
    next = current;

    current = current->link;

    next->link = tempStart;

    tempStart = next;
}

current = tempStart;

for (index = 0; index <= numberInList - 1; index++)
{
    if (index % 5 == 0)
    {
        fout << endl;
    }

    fout << setw(10) << current->data.number;

    current = current->link;
}

标题文件部分:

#ifndef IntegerListClass_h
#define IntegerListClass_h

#include "Standards.h"

//Create a type for the data members
struct nodeType
{
    int number;
};

//Create a  node with a pointer to set for the link node
struct node
{
    nodeType data;
    node* link;
};

//Create a type definition, which is a pointer to the node
typedef node* nodePtr;

class IntegerListClass
{
private:
    nodePtr start;

0 个答案:

没有答案