我有一个节点的链表,它有两个整数的上下值,我想做一个循环,在第一个节点之后检查每个节点,并检查上下的值是否相同其他的。我只是不知道C中的函数名这样做,是否有一个方法的长度,或者我可以说下一个节点不为空的方式?我认为它必须是这样的,但提前抱歉,这是我生命中第二次看过C。这是我需要的伪代码,任何人都可以指出我正确的方向或给我任何提示吗?
while(nextNode != null)
{
if(currentNodes.up == nextNodes.up && currentNodes.down== nextNodes.down):
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:2)
您还需要对当前节点和下一个节点进行某种形式的更新。
例如,让我们说你有这个节点:
struct node;
struct node {
int up;
int down;
struct node *next;
};
然后你主要代码:
/*
* 0 implies false (no clashes) and 1 implies true (clash found).
* Assuming headNode points to the first node in the list.
*/
int checkStuff(struct node *headNode) {
if(headNode == NULL) {
return 0;
//Or return 1 depending on how you want to handle this corner case.
}
struct node *nextNode = headNode->next;
while(nextNode != NULL) {
if(headNode->up == nextNode->up && headNode->down == nextNode->down) {
return 1;
}
nextNode = nextNode->next;
}
return 0;
}
目前这只是将currentNode与所有后续节点进行比较;如果你正在寻找别的东西,你需要重新修改你的循环。