分离链接法的删除操作函数2021/5/5

 自己写的一直编译错误

bool Delete( HashTable H, ElementType Key ){
	Position tmp,ftmp;
	Index Pos;
	Pos=Hash( Key, H->TableSize );
	ftmp=H->Heads[Pos];
	tmp=H->Heads[Pos].Next;
	while(tmp&&strcmp(tmp ->Data,Key)){
		tmp=tmp->Next;
		ftmp=ftmp->Next;
	}
	if(!tmp) return false;
	else {
		ftmp->Next=tmp->Next;
		tmp->Next=NULL;
		free(tmp); 
		printf("%s is deleted from list Heads[%d]",Key,Pos);
		return true;
	}
}

 

这是别人的

bool Delete( HashTable H, ElementType Key ) {
    int s = Hash(Key,H -> TableSize);///题目给定的定位函数,确定Key可能在的位置
    List t = H -> Heads + s;///获得链表头结点
    while(t -> Next && strcmp(t -> Next -> Data,Key)) {
        t = t -> Next;
    }
    if(t -> Next == NULL) return false;
    PtrToLNode temp = t -> Next;
    t -> Next = t -> Next -> Next;
    free(temp);
    printf("%s is deleted from list Heads[%d]\n",Key,s);
    return true;
}

 

上一篇:Linux入门训练二


下一篇:图神经网络总结+比赛