帮我读段C程序

来源:百度知道 编辑:UC知道 时间:2024/04/28 11:47:13
#include <stdio.h>
typedef struct list
{int data;
struct list *next;
}node,*link;
main()
{link ptr,head;
int num,i;
ptr=(link)malloc(sizeof(node));
ptr=head;
printf("please input 5 numbers:\n");
for(i=0;i<5;i++)
{scanf("%d",&num);
ptr->data=num;
ptr->next=(link)malloc(sizeof(node));
if(i==4)ptr->next=NULL;
else ptr=ptr->next;
}
ptr=head;
while(ptr!=NULL)
{printf("The value is %d\n",ptr->data);
ptr=ptr->next;
}
}
1.程序中的第5行为什么要用*link和node?它在主程序中的作用是什么?
2.定义结构体时,代码 struct list *next的作用?
3.变量ptr的含义是什么?

1.
typedef struct list
{int data;
struct list *next;
}node,*link;

<=>

struct list
{int data;
struct list *next;
};
typedef struct listnode;
typedef struct list* link;

2.
即定义了一个指针,用来指示链表下一结点的地址,具体请查看链表的定义(概念)

3.
link ptr<=>struct list* ptr;

*link和node
*link是这个结构体的指针,node是这个结构体的别名!
struct list *next这个也是list的指针,他代表下一个
link ptr还是指针,它是新分配的内存地址

看不懂,,好难