查找单链表中倒数第K个位置上的结点,若查找成功返回该节点的data域,若不成功只返回0

算法的基本设计思想:定义两个指针变量p和q  初始时均指向头结点的下一个结点(即链表的第一个结点)p沿链表移动,当p移动到第k个结点时,q指针开始与p指针同时移动,当p指针移动到最后一个结点时,q指针所指示结点为倒数第k个结点

 typedef struct LNode{
int data;
struct LNode* next;
}LNode, *Linklist; int search_k(Linklist list , int k) {
LNode *p = list->next; LNode *q = list->next; //初始化两个指向链表第一个节点的指针
int count=;
while(p!=NULL){
if(count<k) count++; //当走了count 加个k个之后,q指针才开始移动
else q=q->next; p=p->next; //p指针一直迭代下去
} if(count<k)
return ; // k值太大,q指针根本没有移动,返回错误
else{
printf("%d" , q->data);
return ;
}
}
上一篇:简单的c#winform象棋游戏(附带源码)


下一篇:Java中ArrayList,Vector,LinkedList,HashMap,HashTable,HashSet对比及总结