这是一个自定义函数,用于所创建链表后指定元素返回其位置;
pnode 所代表的是一个指向一个结构体的指针;int a作为接收指定元素的形参;
从第一个结点进行逐个判断,利用while语句进行实现向下检测
开始时, 我使用了while(t->date != a && t != NULL) 语句 ,结果发现在我给定的这个元素并不是链表中的元素时,即会循环到 t = NULL,会出现段错误
分析后发现:去判断while 语句中的条件时会先从t->date去判断,此时就会出现段错误;
改错时方法想到了俩种 :1、如上图所示用t->next去代替t,但有缺陷如果最后一个元素正好是要找的元素,会出现错误,if语句要补充为:if( t->next == NULL)
{
if(t->date == a)
return i;
else
return failure;
}
2、把 t->date != a 与 t != NULL 调换位置,使当t->next ==NULL时先判断直接退出while循环。
很有意思的一个段错误,让我中午吃饭路上都去想的东西。