【发布时间】:2010-05-16 13:57:41
【问题描述】:
struct Record_node* Sequential_search(struct Record_node *List, int target) {
struct Record_node *cur;
cur = List->head ;
if(cur == NULL || cur->key >= target) {
return NULL;
}
while(cur->next != NULL) {
if(cur->next->key >= target) {
return cur;
}
cur = cur->next;
}
return cur;
}
我无法解释这个伪代码。任何人都可以向我解释这个程序是如何工作和流动的吗?给定这个在链表和升序列表中搜索值的伪代码,这个程序会返回什么?
一个。列表中小于目标的最大值
湾。列表中小于或等于目标的最大值
C。列表中大于或等于目标的最小值
d。目标
e.列表中大于目标的最小值
并且说 List 是 [1, 2, 4, 5, 9, 20, 20, 24, 44, 69, 70, 71, 74, 77, 92] 和目标 15,发生了多少次比较? (这里的比较是指比较target的值)
编辑: @Stephen 如果我问我的问题很粗鲁,我很抱歉。
好吧,因为我习惯用 Visual Basic 编程,所以我将程序第 4 行中的 'cur->key' 理解为 'cur is greater than or same as key',但由于 '+=' 意味着 'former value加上后一个值等于后一个值',我可以将'->'解释为'+ ='这部分是我面临的问题之一。
我面临的第二个问题是在 Record_node 中使用指针(如果它是指针)。我什至不确定我是否知道我不知道的事情!我将这个程序理解为某种递归算法。
【问题讨论】:
-
我不认为这是伪代码。
-
这里有很多人可以告诉你。首先告诉我们您的想法(以及原因)。
标签: c linked-list