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

时间:2016-06-02 11:29:08

标签: c++ linked-list insertion-sort

我正在使用插入排序制作一个已排序的双链表,似乎我遇到了问题。 给定的列表是

  

50 20 60 40 30 100 80 70 90 10

,下面是我所做的代码的一部分(void InsertNode(int v)),但结果显示为10 20 30 40 60 70 80 90 100 50。当它应该在40到60之间时,50会出现在列表的末尾。我真的很感谢你的帮助。

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;
}

1 个答案:

答案 0 :(得分:0)

您可以将while循环更改为:

do{
    if(current->data<v){
        previous=current;
        current=current->right;
    }else break;
}while(current != first);

否则,您永远不会将current->right等于first的元素(即最后一个元素)的值与您的值v进行比较。