C ++ двусвязный список не может распечатать новый узел - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь создать двусвязный список, в котором требуется функция ekleSirali, чтобы добавить новый узел, связать новые узлы в порядке, переходящем от меньшего числа к большему, а затем распечатать значения x в этих узлах. , Предполагается, что этот фрагмент кода должен принимать число 1, видеть, что связанный список имеет только один узел, сравнивать 1 со значением x, которое уже существует в узле, и соответствующим образом связывать его с узлом root.

Но это не работает. Я могу напечатать 3, но 1 не появляется. В чем здесь дело?

#include <iostream>
using namespace std;
class dugum{
public:
int x;
dugum(int _x){x=_x;};
dugum* prev;
dugum* next;
};
void yazdir (dugum* r){

    while(r != NULL){
        cout<< r->x<<endl;
        r=r->next;
    }
};
dugum* ekleSirali (dugum* ptr, int x){
    if(ptr->next=NULL){
        if(ptr->x > x) {
        dugum* temp=new dugum(x);
        temp->prev=NULL;
        temp->next=ptr;
        ptr->prev=temp;
        return temp;}
        else {
            dugum* temp= new dugum(x);
            ptr->next=temp;
            temp->prev=ptr;
            temp->next=NULL;
            return ptr;

        }
    }

};
int main (){
    dugum* root;
    dugum* iter;

    root= new dugum(3);
    iter=root;
    root->prev=NULL;
    root->next=NULL;

    root= ekleSirali (root, 1);



    cout<< "1'den 5'e kadar sayıları içeren liste oluşturup sıralı bir şekilde yazdırırsak"<<endl;
    yazdir(iter);
}
...