#include<stdio.h>
#include<stdlib.h>
#define N 6
typedef struct node
{
int num;
struct node *link;
}Node;
Node *create(int n)
{
//h为头结点指针,t为当前结点指针,pre为
//当前结点前一个结点指针
Node *h,*pre,*t;
int number;
if((h=(Node *)malloc(sizeof(Node)))==NULL)
{
printf("分配头结点内存不成功!");
exit(0);
}
h->num=0;
h->link=NULL;
pre=h; //当前结点前一结点指针被设成头结点指针
for(int i=0;i<n;i++)
{
//为每新增的结点分配内存,并返回地址给t
if((t=(Node *)malloc(sizeof(Node)))==NULL)
{
printf("分配第%d个结点内存不成功!",i+1);
exit(0);
}
printf("请输入第%d个数据:",i+1);
scanf("%d",&number);
//将当前结点链接到前一个结点之后
pre->link=t;
//为当前结点分配数据
t->num=number;
t->link=NULL;
//更新结点,当前结点变成头当前结点前一个结点
pre=t;
}
return h;
}
void main()
{
Node *h;
h=create(N);
printf("\n请输入要查找的数:");
int find;
int count=0;
scanf("%d",&find);
Node *now=h->link;
for(int j=0;j<N;j++)
{
if(now->num==find)
count++;
now=now->link;
}
if(count>0)
printf("%d被找到%d次\n",find,count);
else
printf("%d未被找到\n",find);
free(h);
}