2015-12-05 2 views
2

У меня есть связанный список узлов с двумя целыми значениями вверх и вниз, я хочу создать цикл, который проверяет каждый узел после первого, и проверяет, совпадают ли значения вверх и вниз на любом из другие. Я просто не знаю имена функций в C, чтобы сделать это, есть ли длина метода или есть способ, который я могу просто сказать, в то время как следующий узел не является нулевым? Я подумал, что это должно быть что-то вроде этого, но, извините, раньше времени, это второй раз, когда я когда-либо смотрел на C в своей жизни. Это своего рода псевдокод того, что мне нужно, может ли кто-нибудь указать мне в правильном направлении или дать мне какие-нибудь советы?Как написать код этой простой инструкции в C?

while(nextNode != null) 
{ 
    if(currentNodes.up == nextNodes.up && currentNodes.down== nextNodes.down): 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 
} 
+1

Одна проблема: 'else:' и 'while (...):' и 'if (...):' не должны иметь двоеточие. – AlexPogue

ответ

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; 
} 

Это в настоящее время только сравнить сиггепЬЫойю со всеми вытекающими узлами; вам нужно будет переработать ваш цикл, если вы ищете что-то еще.

+0

У меня есть структура, которая определяет узел в другом файле, поэтому, если бы я вместо этого передал его как параметр функции, которая должна была это сделать, я бы просто поместил в качестве параметра say struct node *? –

+0

Также потому, что я никогда раньше не использовал C, вещи, которые вы говорите, немного запутывают. Является ли currentNode фактической вещью, которую вы можете вызвать на C, ссылаясь на текущий узел, или это то, что я должен был бы определить? –

+0

@JoshBurkman: Yeap. –

Смежные вопросы