(1)算法基本思想如下:从头至尾遍历单链表,并用指针p指向当前结点的前k个结点。当遍历到链表的最后一个结点时,指针p所指向的结点即为所查找的结点。 (2)详细实现步骤:增加两个指针变量和一个整型变量,从链表头向后遍历,其中指针p1指向当前遍历的结点

admin2014-12-08  34

问题

选项

答案(1)算法基本思想如下:从头至尾遍历单链表,并用指针p指向当前结点的前k个结点。当遍历到链表的最后一个结点时,指针p所指向的结点即为所查找的结点。 (2)详细实现步骤:增加两个指针变量和一个整型变量,从链表头向后遍历,其中指针p1指向当前遍历的结点,指针p指向p1所指向结点的前k个结点,如果p1之前没有k个结点,那么p指向表头结点。用整型变量i表示当前遍历了多少个结点,当i>k时,指针p随着每次遍历,也向前移动一个结点。当遍历完成时,p或者指向表头结点,或者指向链表中倒数第k个位置上的结点。 (3)算法描述: int LocateElement(Linklist list,int k) { p1=list->link; p=list; i=1; while(p1) { p1=p1->link; i++; if(i>k)p=p->next; //如果i>k,则p也往后移 } if(p==list)return 0; //说明链表没有k个结点 else { printf("%d\n",p->data); return 1; } }

解析
转载请注明原文地址:https://jikaoti.com/ti/GYajFFFM
0

最新回复(0)