m泥沼 2022-10-23 15:44 采纳率: 75%
浏览 53
已结题

自己写的单向链表问一下哪里有问题

#include"stdio.h"
#include"stdlib.h"
struct jiedian
{
char ming[20];
int xuehao;
struct jiedian* next;

};
int i;
struct jiedian* coo()
{
i = 0;
struct jiedain* head = NULL;
struct jiedain* pnew, * pend;
pnew = pend = (struct jiedian*)malloc(sizeof(struct jiedian));
printf("请输入学生信息姓名和学号;\n");
scanf("%s", &pnew->ming);
scanf("%d", &pnew->xuehao);
while (pnew->xuehao != 0)
{
i++;
if (i == 1)
{
pnew->next = head;
pend = pnew;
head = pnew;
}
else
{
pnew->next = NULL;
pend->next = pnew;
pend = pnew;
}
pnew = (struct jiedian*)malloc(sizeof(struct jiedian));
scanf("%s", &pnew->ming);
scanf("%d", &pnew->xuehao);
}
free(pnew);
return head;
}

void print(struct jiedian* head)
{
int p;
struct jiedian* l;
l = head;
if (i = 0)
{
printf("没有一个成员");
}
else
{
for (p = 0;p < i;p++)
{
printf("第%d个成员是:\n", i);
if (i = 1)
{
printf("%s", l->ming);
printf("%d", l->xuehao);
}
else
{
l = l->next;
printf("%s", l->ming);
printf("%d", l->xuehao);
}
}
}
}
int main()
{
struct jiedian* head;
head = coo();
print(head);
return 0;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-10-23 20:52
    关注

    这样写链表不是最合理的方法,改动处见注释,供参考:

    #include"stdio.h"
    #include"stdlib.h"
    struct jiedian{
        char ming[20];
        int  xuehao;
        struct jiedian* next;
    };
    int i;
    struct jiedian* coo()
    {
        i = 0;
        struct jiedian* head = NULL;
        //struct jiedain* head = NULL; 修改
        struct jiedian* pnew, * pend;
        //struct jiedain* pnew, * pend;修改
        pnew = pend = (struct jiedian*)malloc(sizeof(struct jiedian));
        printf("请输入学生信息姓名和学号;\n");
        scanf("%s", pnew->ming);
        //scanf("%s", &pnew->ming);   修改
        scanf("%d", &pnew->xuehao);
        while (pnew->xuehao != 0)
        {
            i++;
            if (i == 1)
            {
                pnew->next = head;
                pend = pnew;
                head = pnew;
            }
            else
            {
                pnew->next = NULL;
                pend->next = pnew;
                pend = pnew;
            }
            pnew = (struct jiedian*)malloc(sizeof(struct jiedian));
            scanf("%s", pnew->ming);
            //scanf("%s", &pnew->ming); 修改
            scanf("%d", &pnew->xuehao);
        }
        free(pnew);
        return head;
    }
    
    void print(struct jiedian* head)
    {
        int p;
        struct jiedian* l;
        l = head;
        if (i == 0)//if (i = 0) 修改
        {
            printf("没有一个成员");
        }
        else
        {
            for (p = 0;p < i;p++)
            {
                printf("第%d个成员是:\n", p);
                //printf("第%d个成员是:\n", i); 修改
                //if (i == 1)  //if (i = 1)      修改
                //{
                //    printf("%s", l->ming);
                //    printf("%d", l->xuehao);
                //}
                //else                          修改
                {
                    printf("%s", l->ming);
                    printf(" %d\n", l->xuehao);
                    //printf("%d", l->xuehao); 修改
                }
                l = l->next;    //修改
            }
        }
    }
    int main()
    {
        struct jiedian* head;
        head = coo();
        print(head);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 创建了问题 10月23日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大