链表节点个数
先定义一个整形函数,因为节点个数肯定是整型变量。
int huoqujiediannum(struct Test *head)
{
int cnt = 0;
while(head != NULL){
cnt++;
head = head->next;
}
printf("cnt++ = %d\n",cnt);
return cnt;
}
然后在main函数里面调用定义的函数。
int ret = huoqujiediannum(&t1);
printf("total num = %d\n",ret);
ret 是return 的缩写 。
这里边有俩种办法可以输出节点个数;
1.可直接在函数里边输出 cnt++
2.也可以在main函数里边调用函数,在输出也可以。
输出结果都一样
运行结果
链表查找
定义一个搜索函数
int sousuoLink(struct Test *head,int data)
{
while(head != NULL){
if(head->data == data){
return 1;
head = head->next;
}else{
return 0;
}
}
}
然后在main中调用
ret = sousuoLink(&t1,8);
if(ret == 0){
printf("no 8\n");
}else{
printf("have 8\n");
}
逻辑是函数中whlie循环,head 不等于空指针 就循环,如果;head->data 有那个存在的data 就返回 1 否则 返回 0 。
而在我在main函数中调用的逻辑是
ret(return的缩写)等于 sousuoLink函数 t1 位链表头,查找 8,如果 ret 等于 0,就输出没有 8,否则(ret 不等于 0),就输出有 8。
因为我建立的链表中没有8,所以输出 no 8。