匿名用户
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)前面,我试过了可以。