c语言链表结点构造函数,c语言:IntelliSense: 不存在从 "int" 转换到 "linklist" 的适当构造函数 计算链表节点的程序...

匿名用户

1级

2012-11-06 回答

#include

#include

#include

typedef struct linklist

{ int data;

struct linklist *next; //少了struct.

} Linklist ; /*定义链表*/ //少了分号.

main()

{

Linklist *p,*head; /*p,*head是指向这种结构的指针*/

int ListLength(Linklist *head); //声明要放在前面。

printf("请输入整型\n");

head=(Linklist*)malloc(sizeof(Linklist));

head->next=NULL;

head->data=NULL; //这行有问题怎么把指针类型的赋给整形数据。这行自己改,其他的问题我都改了。

while(1)

{scanf("%d",&(p->data)); /*头插法*/

if((p->data)==32767) break;

p=(Linklist*)malloc(sizeof(Linklist));

p->next=head->next ;head->next =p;

}

printf("链表长度为%d",ListLength(head));

}

int ListLength(Linklist *head) /*定义结点计算函数(排除头结点)*/

{ Linklist *q;

int len =0;

q=head;

while(q->next)

{q=q->next;

len++;

}

return len;

}

//编译可以通过了

追问:

谢谢。除了一个scanf的警告,其他都通过了,但是没有结果啊。输入数字,然后按回车键毫无反应时怎么回事?

追答:

你的这个程序是题目要求是什么?

追问:

统计链表的结点个数

比方说我输入1,按回车,应该显示1,因为链表中只有一个结点。现在我这个程序按回车毫无反应

追答:

那是因为你输入判断结束的条件是 if((p->data)==32767) break;所以你要输入32767才会结束,之前那个程序你还少了句p=head;放在while(1)前面,我试过了可以。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值