32060049 2015-11-29 01:45 采纳率: 94.4%
浏览 1880
已采纳

C语言动态链表建立问题

#include
#include
#define LEN sizeof(struct Student)

int n = 0;//记录数据的个数

struct Student
{
    int number;
    int score;
    struct Student *next;
};


int main()
{
    struct Student *creat(void);
    void print(struct Student *p);
    struct Student *p;
    p = creat();
    print(p);
    return 0;
}


struct Student *creat(void)
{
    struct Student *p1,*p2;
    struct Student *head = NULL;
    p1 = p2 = (struct Student *)malloc(LEN);
    printf("please enter Students' informations(number & score:)");
    scanf("%d %d",&p1->number,&p1->score);//get
    while(p1->number != 0)
    {
        n += 1;
        if(n==1)head = p1;
        else p2->next = p1;
        p2 = p1;
        printf("please enter Students' informations(number &score):");
        scanf("%d %d",p1->number,p1->score);
        p1 = (struct Student*)malloc(LEN);

    }
   p2->next = NULL;
   return (head);
};


void print(struct Student *p)
{
    printf("their informations as follows:\n");
    while(p->number!=0)
    {
        printf("%d %d",p->number,p->score);
        p = p->next;
    }
}

代码如上,运行后输入第二个数据后显示“该内存不能为written”,用的是CODEBLOCKS。卡在这一天了,求解答,万分感谢~

  • 写回答

4条回答 默认 最新

  • 晚灯看街 2015-11-29 01:57
    关注

    while(p1->number != 0) { n += 1; if(n==1)head = p1; else p2->next = p1; p2 = p1; printf("please enter Students' informations(number &score):"); scanf("%d %d",p1->number,p1->score); p1 = (struct Student*)malloc(LEN); }

    检查这里的scanf函数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形