链表问题

caoyanqi1981 2003-07-17 12:07:45
#define NULL 0
struct list
{
int data;
struct list *next;
};
struct list *Create_list(v,n)
int v[],n;
{
void *malloc();
struct list *head,*p,*q;
int i;
if (n<0)
return(NULL);
q = (struct list *)malloc(sizeof(struct list));
q->data = v[0];
head = q;
printf("/n%d",head->data);
for(i=1;i<n;i++)
{
p = (struct list *)malloc(sizeof(struct list));
q->data = v[i];
q->next = p;
q = p;
}
q->next = NULL;
return(head);
}
main()
{
struct list *Create_list(),*head;
int v[] = {1,2,3,4,5,6};
head = Create_list(v,6);
printf("\n%d",head->data);
}
为什么输出值是1,2
而不是1,1
...全文
32 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
phchenjie 2003-07-17
  • 打赏
  • 举报
回复
for(i=1;i<n;i++)
{
p = (struct list *)malloc(sizeof(struct list));
q->data = v[i];
q->next = p;
q = p;
}

q->data = v[i];这句改成p->data=v[i];试试
前面在设置头结点时只给data域赋值了而没有给next指针域赋值,所以后面的for循环体内的 q->data=v[i];改变的是头结点

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧