2015-03-24 3 views
0

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

list::list() 
{ 
head =NULL; 
} 

void list::insertElement(int element) 
{ 
    //ascending order 
    node *temp, *curr, *prev; 
    temp = new node; 
    temp->item = element; 

    for(prev = head, curr = head/*value set*/; (curr !=head)&& 
    (temp->item>curr ->item)/*condition*/; 
    prev = curr, curr = curr->next/*loop expression*/); 

    if (prev == head) 
    { 
    temp-> next = head; 
    head = temp; 
    } 
    else 
    { 
    temp -> next = curr; 
    prev -> next = temp; 
    } 
    }//end of function 
+0

Это страшная строка кода: 'для (= предыдущая голова, Прев = головы/* значение установлено * /; (ТОК = голова) && (TEMP-> элемент> ТОК -> пункт)!/* condition * /; prev = curr, curr = curr-> next/* выражение цикла * /); 'Никто не может легко понять, что это делает. –

ответ

1

Если вы хотите конвертировать выделенный вами список в круговой связанный список, вам просто нужно установить указатель следующим образом.

node *first; 
temp = first; 
while(temp->link != NULL) 
{ 
    temp = temp->link; 
// its traversing upto last node. 
} 

// здесь назначаем последний узел адреса ссылки на первый узел;

temp->link = first; 
Смежные вопросы