【问题标题】:My circular Linked List is not Displaying the last node我的循环链接列表未显示最后一个节点
【发布时间】:2017-10-27 12:55:07
【问题描述】:

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

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;
    }

【问题讨论】:

  • 循环链表有没有最后一个节点?
  • 检查我编辑的答案。它完美地工作
  • @EdHeal by last node 我的意思是我插入到列表中的最后一个值

标签: c data-structures linked-list


【解决方案1】:
link = head;
do {
    printf("%d\t",link->data);
    link=link->next;
} while(link!=head);

【讨论】:

    【解决方案2】:

    如下修改你的代码

    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);
    }
    

    【讨论】:

    • 谢谢!将使用第二个选项。
    • 这行不通,因为在第一次迭代中head==link。然后你什么都不打印
    • @PhilFighter 是的,它有问题,但第一个代码可以工作
    • @PriyanshSrivastava 使用第一个选项。它可以正常工作
    • 'void display(){ struct list *link;链接=头; while(link->next!=head){ printf("%d\t",link->data); link=link->next;} printf("%d\t",link->data);}'
    猜你喜欢
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    相关资源
    最近更新 更多