不带头结点的单链表
#include <stdlib.h>
#include <stdio.h>
typedef struct node
{ int data;
struct node *next;
}linknode;
typedef linknode *linklist;
/*尾插法创建带头结点的单链表*/
linklist creatlinklist()
{ linklist head,r,s;
int x;
head=r=NULL;
printf("\n请输入一组以0结束的整数序列:\n");
scanf("%d",&x);
while(x) //以0作为标志符结束
{ s=(linklist)malloc(sizeof(linknode)); //分配地址空间
s->data=x;
if(head ==NULL) //
head =s;
else
r->next=s;
r=s;
scanf("%d",&x);
}
if (r) r->next=NULL;
return head;
}
/*输出单链表*/
void print(linklist head)
{ linklist p;
p=head; //不带头节点
printf("List is:\n");
while(p)
{ printf("%5d",p->data);
p=p->next;
}
printf("\n");
}
//基于上述结构定义,求单链表中的结点个数的算法程序如下:
int count(linklist head)
{
linklist p;
int i;
p=head->next;
while(p)
{
p=p->next;
i++;
}
//在此处补充代码
}
int main() /*测试函数*/
{ linklist head;
head=creatlinklist();
print(head);
printf("\nLength of head is:%d",count(head));
return 0;
}