这部分代码让我感到困惑:
if (newitem >= first->info)//e.g., 25 > 3
{
newNode->link = first->link;
first->link = newNode;
first = newNode;
}
^^^^^^^^^^^^^^^^^^^^^^^^^
我很困惑,因为我想知道当您从插入节点创建链接列表时,“第一个”最终指向何处?它是否指向链接列表中的最后一个节点?
这也是声明:
template <class Type>
struct nodeType
{
Type info;
nodeType<Type> *link;
};
在类的保护区域中,第一个被声明为指针:
nodeType<Type> *first;
为什么首先声明为节点而不是常规指针?我以为它将指向链接列表中的第一个节点。
这是我的教授作为演示提供的插入功能,它是模板类的较大演示的一部分:
void insertNode(const Type& newitem)
{
nodeType<Type> *current; //pointer to traverse the list
nodeType<Type> *trailCurrent; //pointer just before current
nodeType<Type> *newNode; //pointer to create a node
bool found;
newNode = new nodeType<Type>; //create the node
newNode->info = newitem; //store newitem in the node
newNode->link = NULL; //set the link field of the node
//to NULL
if (first == NULL) //Case 1 e.g., 3
{
first = newNode;
first->link = newNode;
count++;
}
else
{
if (newitem >= first->info)//e.g., 25 > 3
{
newNode->link = first->link;
first->link = newNode;
first = newNode;
}
else
{
trailCurrent = first; //e.g., 1 < 3
current = first->link;
found = false;
while (current != first && !found)
if (current->info >= newitem)
found = true;
else
{
trailCurrent = current;
current = current->link;
}
trailCurrent->link = newNode;
newNode->link = current;
}
count++;
}//end else
}
仅通过单独使用此功能即可创建链表,但我尚未了解此功能。如果有人可以帮助解释它,那将大有帮助。谢谢。