【发布时间】:2021-07-09 15:56:19
【问题描述】:
所以我正在为我的编译器课程编写一个 SymbolTable 程序 ....我遇到了 pos 的问题 ...为什么我们首先要使用它? TIA
void insert(char *symbol, char *type)
{
int pos = cHash(symbol);
if (block[pos] == NULL)
{
block[pos] = new SymbolInfo();
block[pos]->symbol = symbol;
block[pos]->type = type;
block[pos]->next = NULL;
}
else
{
SymbolInfo *newNode = new SymbolInfo();
newNode->symbol = symbol;
newNode->type = type;
// pointer swap
SymbolInfo *nextNode = block[pos];
block[pos] = newNode;
newNode->next = nextNode;
}
}
【问题讨论】:
-
pos是数组中的位置 ... -
实际上你不必在这里使用
pos,因为你可以存储和使用指针或block[cHash(symbol)]的引用来代替。 -
您需要询问教授课程的人。我们不能说为什么在没有关于发生了什么信息的情况下在随机函数中使用变量。
-
我投票结束,因为没有足够的上下文来回答。我们不知道
block是什么。假设它是一个数组,那么当然需要某种方法来知道要更新哪个元素,因此[pos]。通过分解到一个函数来减少这种重复肯定是有余地的,该函数需要一个MysteriousBlockType&,您将block[pos]传递给该函数,因此只索引一次。但不清楚您的问题是“为什么要索引 ”还是“我可以索引 less”。 -
谢谢大家我理解这个问题
标签: c++ data-structures hash hashtable theory