繁体   English   中英

双链表中的插入排序c ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM