没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
#include
#include
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
long num; /*学号*/
float score; /*分数,其他信息可以继续在下面增加字段*/
struct student *next; /*指向下一节点的指针*/
};
int n; /*节点总数*/
/*
==========================
功能:创建节点
返回:指向链表表头的指针
==========================
*/
struct student *Create()
{
struct student *head; /*头节点*/
struct student *p1=NULL; /*p1 保存创建的新节点的地址*/
struct student *p2=NULL; /*p2 保存原链表最后一个节点的地址*/
n = 0; /*创建前链表的节点总数为 0:空链表*/
p1 = (struct student *)malloc(LEN); /*开辟一个新节点*/
p2 = p1; /*如果节点开辟成功,则 p2 先把它的指针保存下来以备后用*/
if (p1 == NULL) /*节点开辟不成功*/
{
printf("\nCann't create it, try it again in a moment!\n");
return NULL;
}
else /*节点开辟成功*/
{
head = NULL; /*开始 head 指向 NULL*/
printf("Please input %d node -- num,score: ",n+1);
scanf("%ld,%f",&(p1->num),&(p1->score)); /*录入数据*/
}
while(p1->num != 0) /*只要学号不为 0,就继续录入下一个节点*/
{
n += 1; /*节点总数增加 1 个*/
if (n==1) /*如果节点总数是 1,则 head 指向刚创建的节点 p1*/
{
head = p1;
/*
注意:
此时的 p2 就是 p1,也就是 p1->next 指向 NULL。
这样写目的是与下面 else 保持一致。
*/
p2->next = NULL;
}
else
{
p2->next = p1; /*指向上次下面刚开辟的节点*/
}
p2 = p1; /*把 p1 的地址给 p2 保留,然后 p1 去产生新节点*/
p1 = (struct student *)malloc(LEN);
printf("Please input %d node -- num,score: ",n+1);
scanf("%ld,%f",&(p1->num),&(p1->score));
剩余10页未读,继续阅读
资源评论
forrest316
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功