C++程序 在链表中搜索元素
编写一个函数,该函数在给定的单向链表中搜索给定的键“x”。如果x存在于链表中,则该函数应返回true,否则返回false。
例如,如果要搜索的键是15且链表为14->21->11->30->10,则函数应返回false。如果要搜索的键是14,则该函数应返回true。
迭代解法:
1) 初始化一个节点指针current = head
2) 当current不为NULL时执行以下操作
a) 如果current的key与要搜索的key相等,则返回true。
b) current = current->next
3) 返回false
下面是以上算法的迭代实现,用于搜索给定键的节点。
输出:
时间复杂度: O(n),其中n表示给定链表的长度。
辅助空间: O(1),不需要额外空间,因此为常数。
递归解法:
bool search(head, x)
1) 如果head为空,则返回false。
2) 如果head的key与x相同,则返回true;
3) 否则返回search(head->next, x)
下面是以上算法的递归实现,用于搜索给定键的节点。
输出:
时间复杂度: O(n),其中n表示给定链表的长度。
辅助空间: O(n),由于递归调用栈,其中n表示给定链表的长度。