我认为我的链接列表类中的DeleteNode函数中存在逻辑问题。当我测试代码时,当节点在列表中时,它有时会返回false,而我没有找到模式。
如果DeleteNode的这个实现完全没有问题,问题可能出在我使用该方法的代码中,但如果是,我想在发布该代码之前自己查看一下。 (我的目的是告诉你这段代码可能没问题,但我想知道肯定的。)
非常感谢!
标题文件:
#include <string.h>
#ifndef LIST_H
#define LIST_H
class List {
public:
typedef struct node {
char * data;
node * next;
}* nodePtr;
nodePtr curr;
nodePtr temp;
nodePtr head;
public:
List();
void AddNode(char * addData);
bool DeleteNode(char * delData);
bool containsNode(char * Data);
void PrintList();
};
#endif
.cpp文件:
#include <iostream>
#include "SLList.h"
using namespace std;
List::List() {
head = NULL;
curr = NULL;
temp = NULL;
}
bool List::DeleteNode(char * delData) {
nodePtr delPtr = NULL;
temp = head;
curr = head;
while (curr != NULL && curr->data != delData) {
temp = curr;
curr = curr->next;
}
if (curr == NULL) {
return false;
}
else {
delPtr = curr;
curr = curr->next;
temp->next = curr;
delete delPtr;
return true;
}
}