【发布时间】:2014-04-11 19:35:13
【问题描述】:
由于某种原因,每当我尝试使用 appendNode() 时,都会不断收到“找不到标识符”错误。此外,我不断收到一个错误,告诉我我缺少“;”在“使用”之前没有任何意义。
头文件
#ifndef INTEGERLIST_H
#define INTEGERLIST_H
#include <iostream>
using namespace std;
class IntegerList
{
private:
struct ListNode
{
int value;
struct ListNode *next;
};
ListNode *head;
public:
IntegerList()
{
head = NULL;
}
~IntegerList();
void appendNode(int);
void insertNode(int);
void deleteNode(int);
void printList() const;
}
#endif
实现文件
#include "IntegerList.h"
#include <iostream>
using namespace std;
void IntegerList::appendNode(int num)
{
ListNode *newNode;
ListNode *nodePtr;
//new allocation
newNode = new ListNode;
newNode->value = num;
newNode->next = NULL;
if (!head)
head = newNode;
else
{
nodePtr = head;
while(nodePtr->next)
nodePtr = nodePtr->next;
nodePtr->next = newNode;
}
}
void IntegerList::insertNode(int num)
{
ListNode *newNode;
ListNode *nodePtr;
ListNode *previousNode = NULL;
newNode = new ListNode;
newNode->value = num;
if(!head)
{
head = newNode;
newNode->next = NULL;
}
else
{
nodePtr = head;
previousNode = NULL;
while(nodePtr != NULL && nodePtr->value < num)
{
previousNode = nodePtr;
nodePtr = nodePtr->next;
}
if(previousNode == NULL)
{
head = newNode;
newNode->next = nodePtr;
}
else
{
previousNode->next = newNode;
newNode->next = nodePtr;
}
}
}
void IntegerList::deleteNode(int num)
{
ListNode *nodePtr;
ListNode *previousNode;
if(!head)
return;
if(head->value == num)
{
nodePtr = head->next;
delete head;
head = nodePtr;
}
else
{
nodePtr = head;
while(nodePtr != NULL && nodePtr->value != num)
{
previousNode = nodePtr;
nodePtr = nodePtr->next;
}
if(nodePtr)
{
previousNode->next = nodePtr->next;
delete nodePtr;
}
}
}
void IntegerList::printList() const
{
ListNode *nodePtr;
nodePtr = head;
while(nodePtr)
{
cout << nodePtr->value << endl;
nodePtr = nodePtr->next;
}
}
【问题讨论】:
-
从不在标头中放置 using 指令。没有人想包含一个标题并突然得到
std。 -
您在课程结束时缺少一个分号。
-
也许你有一个臭名昭著的错误,即在你的类声明之后缺少
;。我记得在大学时被警告过。
标签: c++ oop object linked-list header-files