Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';用C编写hasNext()函数的正确方法是什么?_C_List_Null_Next - Fatal编程技术网

什么';用C编写hasNext()函数的正确方法是什么?

什么';用C编写hasNext()函数的正确方法是什么?,c,list,null,next,C,List,Null,Next,我正在处理列表,对于hasNext()如何工作,我有点困惑。 我以为会是这样的: int hasNext(const listADT list) { return list->current->tail!= NULL; } int hasNext(const listADT list) { return list->current != NULL; } 但我看到它是这样写的: int hasNext(const listADT list) {

我正在处理列表,对于hasNext()如何工作,我有点困惑。 我以为会是这样的:

int hasNext(const listADT list) {    
   return list->current->tail!= NULL;
}
int hasNext(const listADT list) {    
  return list->current != NULL;
}
但我看到它是这样写的:

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;

提前谢谢。

这取决于你想做什么


在尝试将某个变量前进到下一项之前,可以调用此函数,以防止空引用

int hasNext(const listADT list) {    
   return list->current->tail!= NULL;
}

如果您一开始不担心避免空引用,那么可以在列表中升级后调用此函数

int hasNext(const listADT list) {    
  return list->current != NULL;
}

在非循环列表中,最后一个元素应指向
NULL
。如果不知道实际列表结构以及节点字段的使用方式,则无法判断。如果
list->current
NULL
list->current->tail
将尝试取消对
NULL
的引用。这两个函数都没有多大意义。在链表上,您通常持有对
第一个
元素的引用,也称为
,每个元素持有对
下一个
元素的引用,最后一个元素的
下一个
属性设置为
,表示没有下一个元素。列表中没有对“current”元素的引用,这是只有迭代器才应该知道的,因此您不应该将
列表
传递给函数,并期望它将
当前
元素从中分离出来,当然,您可以将其设计为这样,但它没有多大意义。@Dan问题应该结束,因为如果没有提供列表定义,它就没有意义。