如何将单链表转换为循环列表

时间:2015-03-24 04:37:59

标签: c++ linked-list circular-list

我正试图从我的单链表中创建一个循环列表,将数字按升序排列,但遗憾的是它并没有如此好。它似乎正在制作列表,但由于某种原因,它并没有按照升序输入数字。请帮忙。

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

1 个答案:

答案 0 :(得分:1)

如果要将单链表转换为循环链表,只需设置这样的指针即可。

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

//这里将链接地址的最后一个节点分配给第一个节点;

temp->link = first;