#include<stdio.h>
#include<stdlib.h>
struct Student
{
int m_id;
char name[40];
int age;
struct Student* next;
};
//对链表进行输出
void Print_link(struct Student* head)
{
struct Student* p;
p = head;
printf("ID\t姓名\t年龄\n");
for (p = head->next; p != NULL; p = p->next)
{
printf("%d\t%s\t%d\n", p->m_id, p->name, p->age);
}
}
//对链表赋值
void Set_list(struct Student* t,int i)
{
printf("请输入第%d学生的ID值:\n",i);
scanf_s("%d", &t->m_id);
getchar();//用于接收回义字符
printf("请输入第%d学生的姓名:\n", i);
gets_s(t->name);
printf("请输入第%d学生的年龄:\n", i);
scanf_s("%d", &t->age);
}
//创建链表
struct Student* Creak_link()
{
//创建头指针
struct Student* head = NULL;
//指向本指针
struct Student* p = NULL;
//指向下一个节点
struct Student* q = NULL;
//创建一个结构体
head = (struct Student*)malloc(sizeof(struct Student));
p = head;
int i = 0;
int j = 0;
printf("请问你想创建几个学生?\n");
scanf_s("%d", &j);
while(j == 0 || j < 0 )
{
printf("不能输入错误数字!\n");
printf("请问你想创建几个学生?\n");
scanf_s("%d", &j);
}
for (i = 0; i < j; i++)
{
q = (struct Student*)malloc(sizeof(struct Student));
Set_list(q,i+1);
p->next = q;
}
//尾指针处理
p->next = NULL;
return head;
}
//主函数
void main()
{
//实例化一个结构体
struct Student* head = NULL;
head = Creak_link();
Print_link(head);
}

https://blog.csdn.net/u012187684/article/details/38032693