题目:
已知带头节点的单链表,只有一个数据域和一个指针域。假设目前只给出了头指针list,在不改变链表的前提下,查找链表中倒数第K个位置的节点。若成功,则输出data域的值,并返回1,否则返回0.
算法思想:
定义两个指针变量p和q,均指向头节点的下一个节点,p指针先移动,移动到K时,q指针跟着一起移动;当p移动到链表结尾时,q指针刚好移动到倒数第K个节点.
算法如下:
- typedef struct Node
- {
- int data;
- struct Node *link;
- } *LinkList;
- int searchK(LinkList list, int k)
- {
- LinkList p, q;
- int count = 0;
- p = q = list -> link;
- while(p != NULL){
- if(count < k)
- count++;
- else
- q = q -> next;
- p = p -> next;
- }
-
- if(count < k)
- return 0;
- else{
- printf("%d ", q -> data);
- return 1;
- }
- }
阅读(986) | 评论(0) | 转发(0) |