0

Вставить узел в дважды сортированный списке после каждой вставки, список должен быть отсортированвставка узла в отсортированном двусвязном списке

Узел определяются как

struct Node 
    { 
    int data; 
    Node *next; 
    Node *prev; 
    } 

И логика функции записываются ниже ..

Node* SortedInsert(Node *head,int data) 
{ 
    // Complete this function 
    // Do not write the main method. 
    struct Node *newn= (struct Node*)malloc(sizeof(struct Node*)); 
    newn->data= data; 
    newn->next= newn->prev= NULL; 

    struct Node *trav=head, *pre=NULL; 

    if(head==NULL) 
     head= newn; 
    else if(newn->data <= trav->data) 
    { 
     newn->next= trav; 
     trav->prev= newn; 
     head= newn; 
    } 
    else 
    { 
     while(trav->data <= newn->data) 
     { 
      pre= trav; 
      trav=trav->next; 
     } 
     pre= trav; 
     trav=trav->next; 

     newn->next= trav; 
     trav->prev= newn; 
     pre->next= newn; 
     newn->prev= pre; 
    } 
    return head; 
} 

пожалуйста, дайте мне знать, что проблема с логикой

ответ

2

Yo U делают небольшую ошибку, в первую очередь пространство распределяется таким образом:

struct Node *newn= (struct Node*)malloc(sizeof(struct Node)); 

и правильное другое условие является:

else 
{   
while(trav!=NULL&&trav->data <= newn->data) 
{ 
    pre= trav; 
    trav=trav->next; 
} 
newn->prev=pre; 
newn->next=trav; 
pre->next=newn; 
if(trav!=NULL) 
    trav->prev=newn; 
} 
Смежные вопросы