笔试题:查找并输出链表中倒数第k(k为正整数)个位置上的结点

数据结构

链表

笔试题:

image

(1)算法的基本设计思想:定义两个结构体指针FPhead和SPhead,其中,FPhead需要从头遍历链表,当FPhead和SPhead之间的距离相差k-1,则调动SPhead开始遍历链表,从而确定倒数第k个位置上的结点。

(2)算法的详细实现步骤:定义一个整型变量用来储存两个结构体指针FPhead和SPhead之间的距离,用while循环遍历链表,当FPhead和SPhead之间的距离相差k-1,则调动SPhead开始遍历链表,输出SPhead的结点的data值,并返回1,进行错误处理,返回0。

(3)算法代码:

/********************************************************************************
*	
*	func name	:	LList_Sel
*	function	:	查找并输出链表中倒数第k(k为正整数)个位置上的结点
*	retval		:	int
*	note		:	None
*	author	 	:	cnzycwp@126.com
*	data  	 	:	2024/04/22
*
* *******************************************************************************/
int LList_Sel(LList_t *head,int k)
{
	//定义一个整型变量,判断FPhead和SPhead之间的位置
	int cnt = 0;
	LList_t *FPhead = head;
	LList_t *SPhead = head;

	//进行错误处理
	if (NULL == FPhead)
	{
		return 0;
	}

	//判断首结点的指针域是否为NULL,如果为NULL,则退出循环
	while(FPhead->next)
	{
		FPhead = FPhead->next;
		cnt++;
		//当FPhead和SPhead之间的位置大于k-1时,SPhead开始遍历
		if (cnt > (k - 1))
		{
			SPhead = SPhead->next;
		}	
	}
	printf("The %d-to-last data value is %d\n",k,SPhead->data );
	return 1;
}
posted @ 2024-04-23 08:39  陳文鹏  阅读(11)  评论(0编辑  收藏  举报