算法设计题,听说编程原理书中有样题。能否帮我完善伪代码,拱手。

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:23:33
已知一个带有表头结点的单链表的结点结构为 | data | link |。
假设该链表只给出了头 指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第 k 个位置上的结点(k 为正整数)。若查找成功,算法输出该结点的data 域的值,并返 回1;否则,只返回0。

注: 可以只用一次遍历,先让一个指针p向前走k个位置,然后链头指针q和p一起向前走,p到链尾,q到倒数第k个位置,取q位置data值,否则,返回0。我写了一个,好像不太对。请用较为简明的伪代码编写。
for(i = 0; i < k ; i++)
p = p->next;
while(p!=NULL)
{
p = p->next;
q=q->next;
}

一:主要不会伪代码 那种格式。。。
二:也不知道怎么保持q,p间距k
三:返回值0是出现在什么情况下?
谢谢各位大侠。。。
大虾在哪里?


伪码没有太强的格式要求,只要写程序的人能看懂就行。
i = 0;
p = head;
while (i < k && p!= NULL)
{
p = p->next;
i++;
}
if (i+1 < k || p == NULL) //返回0的2类情况
return 0;
q = head;
while (p!=NULL)
{
p = p->next;
q = q->next;
}
return q->data;