示例1
以下示例包含用于确定链接列表中节点数量的方法大小。该方法通过指向链接列表的头部的指针。
struct node {
int数据;
struct node* next;
};
//从链接列表中返回从
//给定指向列表头的指针。
int size(struct node* head){
struct节点*电流= head;
结构节点*尾巴;
while(current!= null){
尾=电流;
Current = Current-> Next;
}
返回尾巴 - 头;
}
//操纵列表的其他方法
...
但是,该方法创建指向列表末尾的指针,并使用指针减法来确定列表中的节点数量,通过从头指针中减去尾指针。不能保证指针存在于同一内存区域中,因此以这种方式使用指针减法可能会返回不正确的结果并允许其他意外行为。在此示例中,应使用计数器来确定列表中的节点数量,如以下代码所示。
...
int size(struct node* head){
struct节点*电流= head;
int count = 0;
while(current!= null){
计数++;
Current = Current-> Next;
}
返回计数;
}