2017-07-25 94 views
0

我在写功能,其目标是在对打印第二列表中,例如:!怎么样!是从不同=

列表:1 2 3 4 5 6

对列表:2 1 4 3 6 5

我写了下面的代码:

printPair(){ 
    bool flag = 1; 
    node *temp = new node(); 
    node *temp2 = new node(); 
    temp2 = NULL; 

    if(!head) 
    { 
     printf("Empty List!!"); 
     return 0; 
    } 
    temp = head; 

    while(!temp && !temp->next) //Error here 1. 
    { 
     if(!temp2) //Error here 2. 
      temp2->next->next = temp->next; 
     temp2 = temp->next; 
     temp->next = temp->next->next; 
     temp2->next = temp; 
     if(flag) 
     { 
      head = temp2; 
      flag = 0; 
     } 
     temp = temp->next; 
    } 
} 

它工作正常,如果换成:

1. `while(temp !=NULL && temp->next !=NULL)` 
2. `if(temp2 != NULL)` 

那么!!=有什么不同呢?

+1

那么,它们是两个不同的操作符。你有什么错误? – David

+0

当我使用相同的代码: 1.while(!temp &&!temp-> next) 2.if(!temp2) 输出与旧列表相同。 例如:1 2 3 4 输出:1 2 3 4 但如果我改变那里2条件与 1.while(temp!= NULL && temp-> next!= NULL) 2.if(temp!= NULL) 它给出了所需的输出: 输入:1 2 3 4 输出:2 1 4 3 – ak4438

+0

请参阅我的答案。它解释了为什么会出现以下错误以及这两个操作员之间的差异 – UmarZaii

回答

0

while(!temp){}将在temp的布尔值为false时执行。如果温度比空 以外的任何值

while(temp != null)将执行(如果温度是真实的,它也将通过)

要使用一段时间,因为你按照(温度!= NULL) - >下一步引用直到你到达列表中的最后一项(temp-> next指向无处)

相关问题