我将序言说这是我的第一个问题。我目前正在获得信息安全硕士学位,这个学期我不得不参加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();
}
我错过了什么吗?
答案 0 :(得分:5)
先插入,然后阅读输入。
答案 1 :(得分:1)
仅仅根据您的代码内容,我相信maniek有正确的答案,如果/当您找到相同的时候,请亲切地投票给他,而不是这个答案。这是为了让Craig了解如何重新排序他的循环,以便在需要时读取,测试,中断,否则插入。
while (cin >> n && n != 999)
myList.insert(n);
有大约十几种方法来编写代码,使用for循环,do-while循环等,但这应该让你运行。再次,请考虑向上投票maniek的答案,如果它解决了你的问题,请标记绿色检查(以及StackOverflow上提供答案的任何其他答案)寻找)。