虽然循环在我的链表中不起作用

While loop wont work in my Linked List

本文关键字:链表 不起作用 我的 循环      更新时间:2023-10-16

my while 循环在我的链表中不起作用,但 for 循环会,我正在使用 for 循环来打印链表。但是我需要一个整数来放置"n"。我正在尝试通过计算链表中的元素来做到这一点,我需要一段时间循环。因为当这个问题得到修复时,我首先不需要 for 循环,我只想在计算链表中的元素时尝试让它工作。

    int count = 0;
    Hand *crdNode = head;
    while (crdNode != NULL)
    {
       crdNode= crdNode->cardPtr;
       count++;
    }
    cout<<endl;
    return count;

这一切都在 main 以外的单独源文件中的函数中。任何帮助将不胜感激。

工作回路:

    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;
    }

问题出在您的"填充列表"上

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;

只需在 while 循环中添加一个条件即可插入"n"。while 循环如下所示:

while(crdNode!=NULL)
{
    if(position==count)
    {
        //insert code
    }
}