删除链表c ++中的节点

时间:2015-04-24 05:53:20

标签: c++

我认为我的链接列表类中的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;
    }
}

0 个答案:

没有答案