如何 !不同于 !=
how ! is different from !=
我正在编写函数,其目标是打印成对的列表,例如:
list : 1 2 3 4 5 6
pair list: 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)`
那么 !
与 !=
有何不同?
while(!temp){}
将在 temp 的布尔值为 false 时执行。
while(temp != null)
将在 temp 具有除 null 以外的任何值时执行
(如果 temp 为真,它也会通过)
您想使用 while(temp != null) 因为您遵循 -> 下一个引用直到到达列表中的最后一项(temp->next 指向无处)
我正在编写函数,其目标是打印成对的列表,例如:
list : 1 2 3 4 5 6
pair list: 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)`
那么 !
与 !=
有何不同?
while(!temp){}
将在 temp 的布尔值为 false 时执行。
while(temp != null)
将在 temp 具有除 null 以外的任何值时执行
(如果 temp 为真,它也会通过)
您想使用 while(temp != null) 因为您遵循 -> 下一个引用直到到达列表中的最后一项(temp->next 指向无处)