我正在使用列表,我对hasNext((的工作原理有点困惑。 我以为会是这样的:
int hasNext(const listADT list) {
return list->current->tail!= NULL;
}
但我看到它是这样写的:
int hasNext(const listADT list) {
return list->current != NULL;
}
我不确定哪一个是正确的。我认为最后一个元素应该指向 NULL。如果不是这种情况并且第二个版本是正确的,这是否意味着 NULL 被计为列表的最后一个元素?
编辑:我正在尝试编写一个listADT来处理列表,除了有一个函数,如果当前节点有下一个节点,则返回1,我没有尝试做任何特定的事情。
以下是列表的结构:
typedef struct listCDT {
struct node * first;
size_t size;
node * current;
} listCDT;
节点的:
typedef struct node {
elemType elem;
struct node * tail;
} node;
提前谢谢。
这取决于你想做什么...
可以在尝试将某些变量前进到下一项之前调用此函数,以防止 NULL 引用
int hasNext(const listADT list) {
return list->current->tail!= NULL;
}
此函数可以在您进入列表后调用,如果您首先不关心避免 NULL 引用
int hasNext(const listADT list) {
return list->current != NULL;
}