【发布时间】:2019-05-10 22:21:36
【问题描述】:
我正在尝试从作业中的链表中删除节点,但遇到了一个我不知道如何解决的错误。
这是我的课
class PhoneList
{
public:
PhoneList(string/*name*/);
~PhoneList();
void showList(ostream&/*file/screen*/) const;
friend void showList(ostream&/*file/screen*/, PhoneList/*List*/);
void addDirectory(string/*name*/, int/*areaCode*/, int/*phoneNo*/);
void removeDirectory(string/*name*/);
int getNoDirectories()const { return noDirectories; }
string getTitle()const { return title; }
private:
Directory *firstPtr;
string title;
int noDirectories;
};
这是我的目录结构
struct Directory
{
string name;
int areaCode;
int phoneNo;
Directory *link;
};
这是我的删除功能
void PhoneList::removeDirectory(string delName)
{
Directory *walker = NULL;
Directory *stalker = NULL;
Directory *placeHolder = NULL;
walker = firstPtr;
stalker = NULL;
while (walker != NULL)
{
if (walker->name == delName)
{
break;
}
else
{
stalker = walker;
walker = walker->link;
}
}
if (walker == NULL)
{
cout << "Contact not found. Removal not possible. Please enter valid contact name." << endl;
}
else
{
stalker = walker;
walker = walker->link;
delete stalker;
cout << "Contact Deleted." << endl;
}
}
这是我正在使用的客户端代码
myBlackBook->removeDirectory("Adam Taurus");
myBlackBook->removeDirectory("Xander Rogan");
myBlackBook->removeDirectory("Johnathan Jones");
myBlackBook->removeDirectory("Johnathan Jones");
myBlackBook 是我创建的电话列表对象,三个名字都在列表中,是的,第四个是第三个的骗子。我需要证明错误消息正确触发。
我已经调试过,第一个删除函数调用正确通过,但下一次 firstPtr 和 walker 对象将名称成员显示为“读取字符串字符时出错。”。 我已经尝试了多种方法来解决这个问题,而且这种情况一直在发生。感谢您的帮助。
【问题讨论】:
标签: c++ string linked-list