我正在尝试保持原始链接列表("开始"位于我的类对象下的头文件中的节点变量)在通过此函数时保持不变,该函数输出我已存储在&#中的链接列表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;