shiguichai 2022-10-26 23:13 采纳率: 0%
浏览 9

链表初始化用void用不了,改成lian*就可以用了。为什么

#include<stdio.h>
#include<stdlib.h>
typedef struct xxi
{
char xhao[10];
char xin[30];
int nian;
int fen;
}xx;
typedef struct lian
{
xx data;
struct lian* next;
}lian;
//初始化
void chushi(lian* P)
{
P =(lian*) malloc(sizeof(lian));
if (P == NULL)
return;
P->next = NULL;
}
//创建节点
lian* jie(xx op)
{
lian* S = (lian*)malloc(sizeof(lian));
if (S == NULL)
return NULL;
S->data = op;
S->next = NULL;
return S;
}
void cha(lian* T)
{
xx p;
lian* od =T;
printf("请输入学生的信息(学号,姓名,年龄,分数):");
scanf_s("%s%s%d%d", p.xhao, p.xin,&p.nian, &p.fen);
lian* kl = jie(p);

if (kl == NULL)
    return;
while (od->next)
{
    od = od->next;
}
od->next = kl;

}
void bian(lian* T)
{
lian* as = T->next;
if (as == NULL)
return;
while (as != NULL)
{
printf("%s\t%s\t%d\t%d\n", as->data.xhao, as->data.xin, as->data.nian, as->data.fen);
as = as->next;
}
}
int main()
{
lian jk;
chushi(&jk);
cha(&jk);
bian(&jk);
return 0;
}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-10-27 08:55
    关注

    改动处见注释,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct xxi
    {
        char xhao[10];
        char xin[30];
        int  nian;
        int  fen;
    }xx;
    typedef struct _lian
    {
        xx data;
        struct _lian* next;
    }lian;
    //初始化
    void chushi(lian* P) //修改
    {
        //P = (lian*)malloc(sizeof(lian)); //修改
        //if (P == NULL)                   //修改
        //    return;                        //修改
        P->next = NULL;
    }
    //创建节点
    lian* jie(xx op)
    {
        lian* S = (lian*)malloc(sizeof(lian));
        if (S == NULL)
            return NULL;
        S->data = op;
        S->next = NULL;
        return S;
    }
    void cha(lian* T)
    {
        xx p;
        lian* od = T;
        printf("请输入学生的信息(学号,姓名,年龄,分数):");
        scanf_s("%s%s%d%d", p.xhao, 10, p.xin, 30, &p.nian, &p.fen);
        //scanf_s("%s%s%d%d", p.xhao, p.xin, &p.nian, &p.fen); //修改
        lian* kl = jie(p); 
        if (kl == NULL)
            return;
        while (od->next)
        {
            od = od->next;
        }
        od->next = kl;
    }
    void bian(lian* T)
    {
        lian* as = T->next;
        if (as == NULL)
            return;
        while (as != NULL)
        {
            printf("%s\t%s\t%d\t%d\n", as->data.xhao, 
                as->data.xin, as->data.nian, as->data.fen);
            as = as->next;
        }
    }
    int main()
    {
        lian jk;
        chushi(&jk);
        cha(&jk);
        cha(&jk);
        cha(&jk);
        bian(&jk);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月26日

悬赏问题

  • ¥15 程序实在不会写,要秃了
  • ¥15 pycharm导入不了自己的包
  • ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度