读书人

求debug,运行出错啊该怎么处理

发布时间: 2012-03-31 13:13:26 作者: rapoo

求debug,运行出错啊...

C/C++ code
#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h> typedef char Elemtype;#define  MAX 20typedef struct Node{    Elemtype data;    int no; // the number of student    char name[MAX];    int math;     int eng;    Node * next;}Node,*Linklist;   void init_Linklist(Linklist *l){    *l=(Linklist)malloc(sizeof(Node));    (*l)->next=NULL;}void head_insert(Linklist l){    Node *q,*p;    char c='e';    int flag=1;    int no;    char name[MAX];    int math;    int eng;    while(flag)    {        //c=getchar();        scanf("%s",&c);        if(c!='$')        {            printf("请输入学号:\n");            scanf("%d",&no);            printf("请输入姓名:\n");            scanf("%s",&name);            printf("请输入数学成绩:\n");            scanf("%d",&math);            printf("请输入英语成绩:\n");            scanf("%d",&eng);            //printf("请输入英语成绩:\n");            q=(Linklist)malloc(sizeof(Node));            q->data=c;            q->no=no;            strcpy(q->name,name);            q->math=math;            q->eng=eng;            q->next = NULL;          // 加上这个就好            p->next=q;            p=q;        }        else             break;    }}void Delete(Linklist l,int no) //删除指定学号的学生 ,L 为头指针{    Linklist q,p;    p=l;    if (p->next==NULL)    {        //return 0;        printf("空链表!");    }    else    {        if (p->next!=NULL&&p->no!=no)        {            q=p;            p=p->next;        }        else            q->next=p->next;        //free(p);    }}void print(Linklist l){    Linklist p=l->next;    while (1)    {        if (p->next!=NULL)        {            printf("学号:%d\t",p->no);            printf("姓名:%s\t",p->name);            printf("数学成绩%d\t",p->math);            printf("英语成绩%d\t",p->eng);            printf("\n");        }        else             break;        p=p->next;    }}int main(){    Linklist l;    init_Linklist(&l);    head_insert(l);    print(l);    return 0;}


[解决办法]
void head_insert(Linklist l)
里面
p->next=q;
p=q;
这里p还没有初始化、、怎么能够赋值呢?
[解决办法]
C/C++ code
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h> typedef char Elemtype;#define  MAX 20typedef struct Node{    Elemtype data;    int no; // the number of student    char name[MAX];    int math;     int eng;    Node * next;}Node,*Linklist;   void init_Linklist(Linklist *l){    *l=(Linklist)malloc(sizeof(Node));    (*l)->next=NULL;}void head_insert(Linklist l){    Node *q,*p;    char c='e';    int flag=1;    int no;    char name[MAX];    int math;    int eng;        while(flag)    {        //c=getchar();        scanf("%c",&c);//error        if(c!='$')        {            printf("请输入学号:\n");            scanf("%d",&no);            printf("请输入姓名:\n");            scanf("%s",&name);            printf("请输入数学成绩:\n");            scanf("%d",&math);            printf("请输入英语成绩:\n");            scanf("%d",&eng);            //printf("请输入英语成绩:\n");            fflush(stdin);            q=(Linklist)malloc(sizeof(Node));            q->data=c;            q->no=no;            strcpy(q->name,name);            q->math=math;            q->eng=eng;            q->next = NULL;          // 加上这个就好            p=l->next;            l->next=q;            q->next=p;        }        else             break;    }}void Delete(Linklist l,int no) //删除指定学号的学生 ,L 为头指针{    Linklist q,p;    p=l;    if (p->next==NULL)    {        //return 0;        printf("空链表!");    }    else    {       while (p->next->no!=no)       {           p=p->next;       }       q=p->next;       p->next=q->next;       free(q);                //free(p);    }}void print(Linklist l){    Linklist p=l->next;    while (1)    {        if (p!=NULL)        {            printf("学号:%d\t",p->no);            printf("姓名:%s\t",p->name);            printf("数学成绩%d\t",p->math);            printf("英语成绩%d\t",p->eng);            printf("\n");        }        else             break;        p=p->next;    }}int main(){    Linklist l;    init_Linklist(&l);    head_insert(l);    print(l);    return 0;} 

读书人网 >C语言

热点推荐