链表笔试题
假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第 k(k 为正整数)个位置上的结点。若查找成功,算法输出该结点的 data 值,并返回 1;否则只返回0。
要求:
(1)描述算法的基本设计思想.
(2)描述算法的详细实现步骤.
(3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用 C 或 C语言实现),关键之处请给出简要注释.
/*******************************************************************
*
* 函数名称: Find_LList
* 函数功能: 查找链表倒数第k节点的值
* 函数参数:
* @head :传递头节点的地址
@k :接收要查找的节点位置
* 返回结果: 成功返回一,失败返回0.
* 注意事项: None
* 函数作者: liuliu @136.com
* 创建日期: 2024/04/23
* 修改历史:
* 函数版本: V1.0
* *****************************************************************/
int Find_LList(Node_Type *head,int k)
{
int cnt;//计数器,用来算出该链表有多少的节点
Node_Type *current=head-->next;把首节点作为当前节点
//如果链表为空,返回0
if(head-->next)
{
return 0;
}
//链表不为空,遍历计算出节点总数
while(current)
{
cnt++;
current=urrent-->next;
}
//遍历到需要查找的那个节点并打印该节点的数据域
for(int i=0;i<=cnt-k;i++)
{
head=head-->next;
}
printf("%d",head-->data);
return 1;
}
标签:head,--,笔试,链表,int,查找,节点
From: https://www.cnblogs.com/liuliuye/p/18152089