[英]circular linked list problem in c++
為什么我的鏈表代碼不起作用? 4個音符沒有問題,但是當我到達5時,已排序的鏈表似乎掛了。 它不知道在哪里追加並放置新節點嗎?
我的意思是,例如,第一個數據是一個名字以字母A開頭,第二個數字以D開頭,第三個數字以C開頭..但是當我輸入第五個,字母I或K ..我的系統就像掛起的東西..
Node * next;
Node * prev;
userData * data;
Node * start;
Node * end;
void addUserData(userData * data){
string name = data->getName();
Node* node = new Node(data);
if(isEmpty()){
start = node;
end = node;
start->Next(end);
end->Prev(start);
return;
}
else if(!isEmpty() && start == end){
node->Next(start);
node->Prev(start);
start->Next(node);
start->Prev(node);
end = node;
if(start->getUserData()->getName().compare(node->getUserData()->getName())>0){
end = start;
start = node;
}
return;
}
else{
Node *temp = start;
if(name.compare("N") < 0){
while(temp->getNext()->getNext()!=NULL && name.compare(temp->getNext()->getUserData()->getName())>0){
temp = temp ->getNext();
}
}
else{
temp = end;
while(name.compare(temp->getUserData()->getName())<0){
temp = temp ->getPrev();
}
}
if(name.compare(temp->getUserData()->getName())>0){
node ->Next(temp->getNext());
node ->Prev(temp);
temp->Next(node);
node->getNext()->Prev(node);
if(name.compare(end->getUserData()->getName())>0){
end = node;
}
}else if(name.compare(temp->getUserData()->getName())<0){
node->Next(temp);
node->Prev(temp->getPrev());
temp->getPrev()->Next(node);
temp->Prev(node);
if(name.compare(start->getUserData()->getName())<0){
start = node;
}
}else{
cout<<"Name already exist\n";
}
}
}
看看這一節:
if(name.compare("N") < 0){
while(temp->getNext()->getNext()!=NULL && name.compare(temp->getNext()->getUserData()->getName())>0){
temp = temp ->getNext();
}
}
else{
temp = end;
while(name.compare(temp->getUserData()->getName())<0){
temp = temp ->getPrev();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.