c - 遇到了一些关于如何搜索链接列表的代码,并想了解这段代码
问题描述
有人可以向我解释 prev=temp 和最后两行代码吗?谢谢你
node *temp ,*prev;
temp = head;
while(temp != NULL && temp->value <= value) {
prev = temp;
temp = temp->next;
}
newNode->next = temp;
prev->next = newNode;
解决方案
prev 和 temp 是指向列表中两个相邻节点的指针。此代码将 NewNode 插入到 prev 和 temp 之间的列表中:
newNode->next = temp; // newNode goes before temp
prev->next = newNode; // ... and after prev
请注意 temp 可以为 NULL。还行吧。这只是意味着我们将 newNode 放在列表的末尾。
另请注意,代码中存在错误。如果 newNode 应该放在列表的开头,那么 prev 将是未定义的。这种情况的代码是:
newNode->next = temp; // newNode goes before temp
head = newNode; // and there is no previous node
这是更正后的代码:
node *temp ,*prev;
prev = NULL; // no previous at this point
temp = head; // start of list
while(temp != NULL && temp->value <= value) {
prev = temp; // save pointer to previous node
temp = temp->next; // advance through list
}
newNode->next = temp;
if (prev == NULL)
head = newNode;
else
prev->next = newNode;
推荐阅读
- python - Writing with Python Greek letters to (Oracle) SQL file doesn't work
- javascript - Showing the contents of a MYSQL database on a webpage using node.js and html
- visual-c++ - 使用 CMake 在 MSVC 中使用 Pytorch Cuda c++ 编译 C++/Cuda 扩展时出错
- ios - If AppleWebKit appears in the user agent does that mean it's definitely an apple device?
- html - Sticky-top not working with bootstrap navbar
- arduino - How to control the speed of a stepper motor using PID control and ultrasonic sensor?
- java - Query in SQL not producing result
- azure-functions - pyodbc.connect() 首次尝试从 Azure 函数连接到 Azure SQL 失败
- python - Pandas(or numpy) has problem for use. RuntimeError but I have installation
- moodle - 如何创建包含单选和多项选择的完形填空题类型?