我正在尝试创建一个搜索函数,通过我的节点查看具有相同参数的一个,但我似乎无法理解如何执行此操作。我的节点(Element)由指针next_,T color_和string name_组成。我需要返回一个与我找到的节点和前一个节点的对。如果未找到或之前没有,则为nullpointer。
template<typename T>
pair<Element<T>*, Element<T>*> PAL<T>::find(string name){
pair<Element<T>*, Element<T>*> *result = nullptr;
Element<T>* x = nullptr;
Element<T>* y = nullptr;
for (Element<T> *n = back_; n != nullptr; n = n -> next_){
if (n -> name_ == name){
Element<T>* x = Element<T>(n -> name_, n -> color_);
result.first = x;
result.second = y;
break;
}
Element<T>* y = Element<T>(n -> name_, n -> color_);
}
return result;
}
这是我第一次做这些清单,所以我不知道自己在做什么。我感谢任何帮助,如果需要我可以提供更多信息! 谢谢!
答案 0 :(得分:0)
您滥用from selenium.webdriver import PhantomJS
driver = PhantomJS()
script = """
var page = this;
page.onResourceRequested = function (req) {
console.log('requested: ' + JSON.stringify(req, undefined, 4));
};
page.onResourceReceived = function (res) {
console.log('received: ' + JSON.stringify(res, undefined, 4));
};
"""
driver.execute_phantomjs(script)
driver.get("http://ariya.github.com/js/random/")
driver.quit()
和一般指针。
此外,&#34; 如果找不到或之前没有,则返回null &#34;,第二个要求对于通用搜索功能!你真的想忽略列表中的第一个节点吗?
如果是这样,请尝试更像这样的事情:
std::pair
可替换地:
template <typename T>
struct Element
{
Element* next_;
T color_;
std::string name_;
};
template <typename T>
class PAL
{
public:
//...
std::pair<Element<T>*, Element<T>*> find(std::string name);
private:
Element<T> *head_; // pointer to FIRST element
};
template <typename T>
std::pair<Element<T>*, Element<T>*> PAL<T>::find(std::string name)
{
Element<T> *previous = nullptr;
for (Element<T> *node = head_; node != nullptr; node = node->next_)
{
if (node->name_ == name)
{
if (previous != nullptr)
return std::make_pair(node, previous);
break;
}
previous = node;
}
return std::make_pair<Element<T>*>(nullptr, nullptr);
}
但是,如果你真的不想忽略第一个节点,那么试试这个(并让调用者决定如果前一个节点为空则该怎么做):
template <typename T>
std::pair<Element<T>*, Element<T>*> PAL<T>::find(std::string name)
{
if (head_ != nullptr)
{
Element<T> *previous = head_;
for (Element<T> *node = head_->next; node != nullptr; node = node->next_)
{
if (node->name_ == name)
return std::make_pair(node, previous);
previous = node;
}
}
return std::make_pair<Element<T>*>(nullptr, nullptr);
}