我的循环链表没有显示最后一个节点

时间:2017-10-27 12:55:08

标签: c data-structures linked-list

以下是显示我创建的单个循环链表的代码。程序获取值,但显示插入的插入值,直到头部的倒数第二个节点。 插入代码如下 -

if(head==NULL)
{
    new_node=(struct list *)malloc(sizeof(struct list));
    printf("Enter the data : ");
    scanf("%d",&new_node->data);
    new_node->next=NULL;
    head=new_node;
    link=head;
    head->next=head;
}
else
{
    new_node=(struct list *)malloc(sizeof(struct list));
    printf("Enter the data : ");
    scanf("%d",&new_node->data);
    new_node->next=head;
    link->next=new_node;
    link=new_node;
}
void display()
{
    struct list *link;
    link=head;
    while(link->next!=head)
    {
        printf("%d\t",link->data);
        link=link->next;
    }

2 个答案:

答案 0 :(得分:1)

link = head;
do {
    printf("%d\t",link->data);
    link=link->next;
} while(link!=head);

答案 1 :(得分:0)

按如下方式更改您的代码

while(link->next!=head){
    printf("%d\t",link->data);
    link=link->next;
}
if(link != null){ //To check weather the link is empty and to print the last node
    printf("%d\t",link->data);
}