我将在前言中说这是我的第一个问题。我目前正在获得信息安全硕士学位,本学期我必须学习 C++ 编程。所以这是与作业有关的。我不是在找你来回答我的作业,但我遇到了一个特殊的情况。我已经创建了使用双向链表的程序,并且一切正常。但是,当我让用户创建一个值列表时,第一个节点一直返回 0。我试图找到一些关于此的阅读,但我找不到对它的任何引用。我的问题是头节点(第一个节点)总是为零吗?还是我做错了什么。
case: 'C':
cout<<"Please enter a list:"<<endl;
while(n!=-999){
myList.insert(n);
cin>> n;}
break;
我现在输入:12321、1234、64564、346346。结果为 0、12321、1234、64564、346346。这是应该发生的事情还是我做错了什么?另外,由于这是我的第一篇文章,请随时批评或教我如何对关键字进行颜色编码。
无论如何,这是一个家庭作业,所以我只是在寻找指导和建设性的批评。
谢谢大家
所以我无法弄清楚这个论坛上的评论部分,所以我将编辑原始帖子第一部分是构造函数代码:
template <class Type>
doublyLinkedList<Type>::doublyLinkedList()
{
first= NULL;
last = NULL;
count = 0;
}
然后是我的插入功能:
template <class Type>
void doublyLinkedList<Type>::insert(const Type& insertItem)
{
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 = insertItem; //store the new item in the node
newNode->next = NULL;
newNode->back = NULL;
if(first == NULL) //if the list is empty, newNode is
//the only node
{
first = newNode;
last = newNode;
count++;
}
else
{
found = false;
current = first;
while (current != NULL && !found) //search the list
if (current->info >= insertItem)
found = true;
else
{
trailCurrent = current;
current = current->next;
}
if (current == first) //insert newNode before first
{
first->back = newNode;
newNode->next = first;
first = newNode;
count++;
}
else
{
//insert newNode between trailCurrent and current
if (current != NULL)
{
trailCurrent->next = newNode;
newNode->back = trailCurrent;
newNode->next = current;
current->back = newNode;
}
else
{
trailCurrent->next = newNode;
newNode->back = trailCurrent;
last = newNode;
}
count++;
}//end else
}//end else
}//end
然后我也有一个初始化函数:
template <class Type>
void doublyLinkedList<Type>::initializeList()
{
destroy();
}
我错过了什么吗?