编写一个函数,统计出单链表中值等于x的个数。
#include<stdio.h>
#include<stdlib.h>
#define SIZE 10
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*LinkNode;
//创建链表
int CreatLink(LinkNode link,int *arr){
if(link==NULL)
return 0;
Lnode *q=link;
for(int i=0;i<SIZE;i++){
Lnode *p=new Lnode();
p->data=arr[i];
q->next=p;
q=p;
}
return 1;
}
//初始化链表
int InitNode(LinkNode link){
Lnode *p=link;
p=(Lnode*)malloc(sizeof(Lnode));
if(p==NULL){
exit(0);
}
p->next=NULL;
}
//统计单链表中等于x的个数
int Count(LinkNode link,int e){
int count=0;
Lnode *p=link;
while(p){
if(p->data==e)
count++;
p=p->next;
}
return count;
}
int main(){
Lnode link;
int arr[SIZE];
printf("输入长度为%d的链表:",SIZE);
for(int i=0;i<SIZE;i++){
scanf("%d",&arr[i]);
}
int x;
printf("输入在该链表中要查找的数:");
scanf("%d",&x);
InitNode(&link);
CreatLink(&link,arr);
printf("该链表等于%d的个数有%d个",x,Count(&link,x));
return 0;
}