主题:那么好我看一下啊,总是有错,谢谢了
husting
[专家分:0] 发布于 2008-10-22 13:44:00
#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个回复)
沙发
shuukaki [专家分:850] 发布于 2008-10-23 12:20:00
*q=p->next; // 都没有定义,怎么能使用呢?(又不是VB)
另外 *q 相当于lnode 而p->next 是lnode * 。类型不匹配。 *(p->next)
板凳
husting [专家分:0] 发布于 2008-10-23 21:49:00
#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 楼
永远精湛 [专家分:1440] 发布于 2008-10-24 10:43:00
[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]
链表是一个节点,一个节点的插入的。不是一次就申请完内存的!
最后要记住释放内存!
我来回复