我試過了,但是我無法讓它正常工作。我需要從鏈接列表中刪除號碼。這是我到目前爲止已經完成:從單個鏈接列表中刪除整個節點
class MatrixLL
{
private:
struct MatrixLLElem
{
Matrix elem;
MatrixLLElem* next;
MatrixLLElem(const Matrix& m1): elem(m1), next(NULL)
{ }
};
MatrixLLElem* start;
public:
MatrixLL();
Matrix& elem(const int index);
int getlength();
void append(const Matrix& m1);
void deleteelem(const int index);
~MatrixLL();
};
我的其他代碼不用擔心的,因爲它完美的作品,所以這裏的deleteelem()的代碼;功能:
void MatrixLL::deleteelem(const int index)
{
if(index < 1)
throw "Invalid index specified.";
if(start == NULL)
throw "No element at specified location.";
MatrixLLElem* currP = start;
MatrixLLElem** prevP = NULL;
for(int i = 1; i < index; i++)
{
prevP = &currP;
if((*currP).next != NULL)
currP = (*currP).next;
else
throw "No element at specified location.";
}
if(prevP == NULL)
{
start = NULL;
}
else
{
(*prevP) = (*currP).next;
}
delete currP;
}
編輯:它減少從2長度爲0,如果我檢查......而長度功能似乎如果我追加到工作正常,然後檢查等指標應該是從1開始。
謝謝,我已經明白了。 :) – 2011-05-29 11:18:14