gpt4 book ai didi

c - 使用辅助函数插入到链接列表

转载 作者:行者123 更新时间:2023-11-30 15:31:07 26 4
gpt4 key购买 nike

在插入中,我尝试插入一对,一个键和另一个称为值。我一直在尝试让我的插入功能正常工作,如下所示我输入的错误不断被调用,说 key 已经存在,但事实并非如此。

void insert(Dictionary D, char* key, char* value){
Node N;
if(lookup(D,key)!= NULL){
fprintf(stderr, "Dictionary Error: calling insert() on a key that already exists %s\n ", key);
exit(EXIT_FAILURE);

}else{
if(D-> == NULL){//if the list is empty
N = newNode(key);
N->next = D->head;
D->head = N;
D->tail = N;

D->head->next = newNode(value);

}else{
D->tail->next=newNode(key);
D->tail= newNode(key);
D->tail = newNode(value);
D->tail = newNode(value);




}
}
D->numItems++;
D->numItems++;
}

我的查找和 findKey 函数如下所示:

//lookup()
//returns the value v such that k, v is in D, or returns NULL if no
//value v exists
char* lookup(Dictionary D, char* key){

if(findKey(D, key)==NULL){
return NULL;
}else{
Node N = findKey(D, key);
return N;//changed this at lookup, when I write to string make sure that this works
}
}

//findKey()
//returns a reference to hte node at position of the key in the dictionary
Node findKey(Dictionary D, char* key){
Node N = NULL;
N = D->head;
while(N != NULL){
if(strcmp(N->item, key)==0){
N = N->next;
}
return N;
}
return N;
}

最佳答案

findKey函数中,您根本不会循环,您将在循环的第一次迭代中无条件返回。

我认为你的意思是这样做

Node findKey(Dictionary D, char* key){
Node N = NULL;
N = D->head;
while(N != NULL){
if(strcmp(N->item, key)==0){
return N;
}
N = N->next;
}
return N;
}

请注意,我交换了两行的位置:内部 return 语句和 N = N->next; 语句。

关于c - 使用辅助函数插入到链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com