如何在 C 中比较节点而不添加重复项



我有三个节点,如下所示。

第一个节点(sNodes)包含:a,b,c,d第二个节点(rNodes)包含:c,d,e,f第三个节点(节点)包含:a,b,c,d

我想从第二个节点添加不在第三个节点中的任何节点。我很难用 C 语言做到这一点,因为我只是一个初学者。我尝试在 for 循环中使用 strcmp 方法,但无法以这种方式解决。任何帮助将不胜感激。

typedef struct {
char emails[(LENGTH*2)+1];
}Node;
Node nodes[GRAPH_SIZE + 1], sNodes[(GRAPH_SIZE + 1) / 2], rNodes[(GRAPH_SIZE + 1)/2];
void addNode(){
int j =0,k = 0, compare, total;
char item[] = {0};
for(j = 0; j <= GRAPH_SIZE/2; j++){
    total = 0;
    for(k = 0; k <= GRAPH_SIZE/2; k++){
        if(strcmp(rNodes[j].emails, nodes[k].emails) != 0){
            total = 1;
        }else {
            total = 0;
        }
    }
    if(total == 1){
        strcpy(nodes[i].emails, rNodes[j].emails);
    }
}
}

您提供的代码片段不完整或有问题,
(如未使用的sNodes,项目,比较...我找不到我在哪里)
而你想做什么,我也不清楚。

但是让我假设你想做比较,如果不匹配,做一些副本。
然后你应该在发现不匹配节点时中断 for strcmp 循环,
因此,您可以复制目标节点,而不仅仅是设置标志。

相关内容

  • 没有找到相关文章

最新更新