虽然循环不会在我的链接列表中工作
问题描述:
我的while循环不会在我的链表中工作,但for循环会,我正在使用for循环打印链接列表。但我需要一个整数来放置“n”。我试图通过计算链表中的元素来实现这一点,我需要一个while循环。因为当这个问题得到解决时,我不会首先需要for循环,我只是想在计算链表中的元素时使用它。虽然循环不会在我的链接列表中工作
int count = 0;
Hand *crdNode = head;
while (crdNode != NULL)
{
crdNode= crdNode->cardPtr;
count++;
}
cout<<endl;
return count;
这是所有在比主之外的单独的源文件中的函数的内部。任何帮助,将不胜感激。
工作循环:
Hand *crdNode = head;
for (int i = 0; i < n; i++)
{
cout<< crdNode ->card<<endl;
crdNode= crdNode->cardPtr;
}
cout<<endl;
填单子功能
if (head == NULL)
{
crdNode = new Hand;
crdNode ->card = t;
temp = crdNode;
head = crdNode;
}
else
{
crdNode = new Hand;
crdNode -> card = t;
crdNode -> cardPtr = head;
head = crdNode;
crdNode -> cardPtr = NULL;
}
答
只需在要插入你的“n'.The while循环是这样的while循环添加一个条件:
while(crdNode!=NULL)
{
if(position==count)
{
//insert code
}
}
答
问题出在您的“填充列表”
if (head == NULL)
{
crdNode = new Hand;
crdNode ->card = t;
crdNode -> cardPtr = NULL; // Add this line to set the next pointer
// temp = crdNode; Remove this line - temp isn't used
head = crdNode;
}
else
{
crdNode = new Hand;
crdNode -> card = t;
crdNode -> cardPtr = head;
head = crdNode;
// crdNode -> cardPtr = NULL; Remove this line - it destroys the list
}
的代码可以被重写和简化,如:
crdNode = new Hand;
crdNode -> card = t;
crdNode -> cardPtr = head;
head = crdNode;
怎么样,包括for循环工作,所以我们可以比较自己呢? – John3136
会做,谢谢。 –
在最后一个元素中看起来'cardPtr'不是'NULL',所以while循环不会在最后一个元素之后停止。当你添加一个新元素到列表的最后时,确保你将'cardPtr'赋值为'NULL'。 – Rogus