为什么这个程序使用单指针不工作



如果我们使用双指针而不是单指针,这段代码可以正常工作。

Node *pairwiseSwap(Node *start)
{
    Node *prev=start,*current=start->next;
    if(start==NULL || start->next==NULL)
    return 0;
    while(true)
    {
        Node *next=current->next;
        current->next=prev;
        if(next==NULL || next->next==NULL)
        {
            prev->next=next;
            break;
        }
        prev->next=next->next;**//next to next**
        prev=next;
        current=prev->next;**//appending nodes to the previous one**
    }
    return start;
}
    Node *prev=start,*current=start->next;
    if(start==NULL || start->next==NULL)

这就是你的问题。

如果start==NULL,你得到一个错误时做current=start->next,因为你试图解引用一个NULL指针

我假设您正在尝试在链表上做一些事情,并且您希望返回0 (NULL指针),以防列表只有一个元素。

如果是这种情况,交换函数

的前两个指令就足够了

你首先要纠正这个:

 Node *prev=start,*current=start->next;
                          /* ^___ start can it be null? */
                          /* according to the next code, yes it can */
if(start==NULL || start->next==NULL) /*test if start is null*/
return 0;

改成:

Node *prev,*current;
if(start==NULL || start->next==NULL)
return 0;
prev=start;
current=start->next;

然后清楚地描述你的问题

相关内容

  • 没有找到相关文章

最新更新