回 帖 发 新 帖 刷新版面

主题:那么好我看一下啊,总是有错,谢谢了

#include<stdio.h>
#include<stdlib.h>
typedef struct lnode{
    int date;
    struct lnode *next;
}lnode;
void main()
{
    lnode *p;
    {p=(lnode*)malloc(7*sizeof(lnode));
    *q=p->next;
    for(int i=0;i<7;i++)
   
    
     scanf("%d",p->date);
     q=p->next;
   }
}

回复列表 (共3个回复)

沙发

*q=p->next;   // 都没有定义,怎么能使用呢?(又不是VB)

另外 *q 相当于lnode  而p->next 是lnode *  。类型不匹配。 *(p->next)

板凳


#include<stdio.h>
#include<stdlib.h>
typedef struct lnode{
    int date;
    struct lnode *next;
}lnode;
void main()
{
    lnode *p;p=(lnode*)malloc(7*sizeof(lnode));
    lnode *q=p->next;
    for(int i=0;i<7;i++)
    {scanf("%d",p->date);
    q=p->next;}
}
编译没有错误
还是不行啊...
我就是想建一个链表,然后输入数据,只执行一次就说找不到地址了...

3 楼


[code=c]
#include<stdio.h>
#include<stdlib.h>
typedef struct lnode{
    int date;
    struct lnode *next;
}lnode;
void main()
{
    lnode *head=(lnode*)malloc(sizeof(lnode));
    head->date=1;
    head->next=NULL;
    lnode *p=head,*q;;
    for(int i=0;i<6;i++)
    {
        q=(lnode *)malloc(sizeof(lnode));
        printf("请输入第%d个该节点的值,共7个:",i+2);
        scanf("%d",&q->date);
        q->next=NULL;
        p->next=q;
        p=q;
    }
    p=head;
    while (p!=NULL)
    {
        printf("%5d",p->date);
        p=p->next;
    }
    printf("\n");
    p=head;
    q=head;
    while (p!=NULL)
    {
        q=p->next;
        free(p);
        p=q;
    }
}
[/code]
链表是一个节点,一个节点的插入的。不是一次就申请完内存的!
最后要记住释放内存!

我来回复

您尚未登录,请登录后再回复。点此登录或注册