[英]Insertion sort in Double Linked List c++
我正在使用插入排序制作一个排序的双链表,看来我有问题。 给定的列表是
50 20 60 40 30 100 80 70 90 10
下面是我制作的代码的一部分( void InsertNode(int v)
),但是结果显示为10 20 30 40 60 70 80 90 100 50
。 50在列表的末尾,应该在40到60之间。我非常感谢您的帮助。
void InsertNode(int v){
DblListNode *newNode=new DblListNode;
DblListNode *current, *previous;
newNode->data=v;
current=previous=first;
while(current->right!=first){
if(current->data<v){
previous=current;
current=current->right;
}else break;
}
if(newNode==NULL){
cout<<"No memory for newNode."<<endl;
exit(1);
}
Insert(newNode, previous);
}
void Insert(DblListNode *p, DblListNode *x){
p->left=x;
p->right=x->right;
x->right->left=p;
x->right=p;
}
您可以将while循环更改为:
do{
if(current->data<v){
previous=current;
current=current->right;
}else break;
}while(current != first);
否则,您永远不要将current->right
等于first
(即最后一个元素)的元素的值与您的值v
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.