上帝的骰子606 2021-09-14 10:11 采纳率: 25%
浏览 37

c语言链表问题,不理解下面的代码如何实现链表

不理解下面代码是如何链起来的
主要每次循环都会做last=head,那这样不就是类似太阳花那样,head为中心,数据都在外面一圈吗?
但是,遍历是正确的,那不是就是说它链起来了吗?

求解答

代码如下


```c
#include <stdio.h>
#include <stdlib.h>
typedef struct _node{
    int data;
    struct _node *pRear;
}node;

int main()
{
    int number;
    node *head=NULL;
    
    do{
        scanf("%d",&number);
        if(number!=-1){
            node *p=(node*)malloc(sizeof(node));
            p->data=number;
            p->pRear=NULL; 
            node *last=head;
            
//            printf("last.p=%p ",&last);
//            printf("last.p=%p ",last);
//            printf("last->pRear_p=%p ",last->pRear);
//            printf("head.p=%p ",&head);    
//            printf("head.p=%p ",head);    
         
            if(last){
                while(last->pRear!=NULL){
                    last=last->pRear; 
                }
                last->pRear=p;
            }else{
                head=p;
            }
        }
    
    }while(number!=-1);
    node *ps;
    for(ps=head;ps;ps=ps->pRear){
        printf("%d\n",ps->data);
    }
    
    return 0;
}


  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-09-14 10:19
    关注

    last=head只是初始化last指针而已,后面if(last)会通过循环将last指针向链表后面移动,直到移动到链表尾(pRear为空),然后将last的pRear指向新的节点p,就链上啦

    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日

悬赏问题

  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺