我正在编写一个程序,如果你愿意,它会读取“学生记录”,然后根据数据将其分成 4 个二叉搜索树。我试图删除一个节点,但我不想实际删除它,我只想在结构中设置一个标志,它基本上让我知道它已被“删除”。这是我的代码,它给了我几个错误:
void deleteNode( TreeNodePtr *treePtr, SREC R, unsigned long key)/*ADD HOW*/
{
printf("I got into the delete function.\n");
/*empty*/
if(*treePtr != NULL)
{
if(R.SID<(*treePtr)->SID)/*Not empty*/
{
printf("less than\n");
deleteNode((*treePtr)->leftPtr, R, key);
}
else if(R.SID>(*treePtr)->SID)
{
printf("more than.\n");
deleteNode((*treePtr)->rightPtr, R, key);
}
else
{
treePtr->exists = 1;
printf("Are we deleted yet?\n");
}
}
else
{
fprintf(stderr,"Could not locate student with ID.\n");
}
}
错误是:注意:预期为“struct treeNode **”,但参数类型为“struct treeNode *”错误:“struct treeNode”没有名为“SID”的成员。我确定我只是错过了一些小东西,但我不知道它是什么。有任何想法吗?