Я пытаюсь создать двусвязный список, в котором требуется функция 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);
}