消息关闭
    暂无新消息!

跟链表有关的,程序无法运行

问题作者 : 傻YO2017-08-12发布
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct B)
struct B
{
int a;
struct B *p;
};
struct B*creat()
{
char b;
struct B*head,*p1,*p2;
int c=0;
head=NULL;
b=getchar();
while(b!='\n')
{
if(c=0)
{
p1=(struct B*)malloc(LEN);
p2=p1;
head=p1;
p1->a=c+1;
continue;
}
else
{
p1=(struct B*)malloc(LEN);
p2->p=p1;
p2=p1;
p1->a=c+1;
}
c=c+1;
b=getchar();
}
p1->p=NULL;
printf("%d",c);
return head;
}
int main()
{
struct B*p3;
p3=creat();
return 0;
}

3个回答

︿ 2
#include<stdio.h>
#include<stdlib.h>

#define LEN sizeof(struct B)

struct B
{
    int a;
    struct B *p;
};
struct B*creat()
{
    char b;
    struct B*head,*p1,*p2;
    int c=0;
    head=NULL;
    b = getchar();
    while(b!='\n')
    {
        if(c == 0)    /*here is not '=' */
        {
            p1 = (struct B*)malloc(LEN);
            p2 = p1;
            head = p1;
            p1->a = c++;   /* here c must add 1*/
            continue;
        }
        else
        {
            p1=(struct B*)malloc(LEN);
            p2->p = p1;
            p2 = p1;
            p1->a = c + 1;
        }
        c = c + 1;
        b = getchar();
    }
    p1->p = NULL;
    printf("%d", c);
    return head;
}
int main()
{
    struct B*p3;
    p3=creat();
    return 0;
}

两个问题,分别在语句后面加了注释。
个人建议,结构体用于指向下一个节点的地址指针,建议取名为next或者pnext;这样见名知义,提高代码的可读性。