在单链列表中查找和移动

时间:2019-03-11 23:11:27

标签: c

我的代码中不断出现错误,无法找出错误所在。 该代码应该找到包含findValue的第一个节点,并将该节点从其当前位置移动到列表的开头。

以下是我收到的错误消息-

list.c:56:15: error: invalid operands to binary expression
('int (*)()' and 'int')
count << node->value << " ";  

功能:

void findAndMove(listNode **listPtr, int findValue) {  
  if (*listPtr == NULL || (*listPtr)->next == NULL)  
    return;  

  listNode *secLast = NULL;  
  listNode *last = *listPtr;  

  while (last->next != NULL)  
  {
      if(last->value == findValue)
      {
        break;
      }
      secLast = last;  
      last = last->next;  
  }  

  secLast->next = last->next;  

  last->next = *listPtr;  

  *listPtr = last;  
}  

void push(listNode** head_ref, int new_data)  
{  
    listNode* new_node = new_listNode(); 

    new_node->value = new_data;  

    new_node->next = (*head_ref);  

    (*head_ref) = new_node;  
}  

void printList(listNode *node)  
{  
    while(node != NULL)  
    {  
        count << node->value << " ";  
        node = node->next;  
    }  
}

1 个答案:

答案 0 :(得分:-1)

void printList(listNode *node)  
{  
    while(node != NULL)  
    {  
        count << node->value << " ";  
        node = node->next;  
    }  
}

带有count << node->value << " ";的这一行看起来像是您尝试使用C ++的标准命名空间中的cout。在C语言中,您需要像下面这样使用printf:

void printList(listNode *node)  
{  
    while(node != NULL)  
    {  
        //count << node->value << " ";  
        printf("%d \n", node->value); //IDK what the print should be because you didnt post the node struct, but you need to use a function from the printf family if your printing 
        node = node->next;  
    }  
}

EDIT 当我第一次阅读您的问题时,我以为您正在做一些改动,直到我阅读函数名称来尝试确定您要执行的操作。我假设带有“”的移位将移位32位,然后在某些int计数上移位node-> value,该移位从未分配,因此将得到优化。