html

链表笔试题

链表笔试题

假设该链表只给出了头指针 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;
	
	
}
posted @ 2024-04-23 09:14  大螺丝贼六  阅读(18)  评论(1)    收藏  举报
html