有一个单链表,其头指针为head,编写一个函数来计算数据域为x的结点个数。
老师要求编写个完整的程序,要求用c++可以运行的,网上找的答案只有运行过程的一部分,没有主函数,请帮忙补充一下可以么?谢谢
int count(head)
node * head;
{ node * p;
int n= ();
p= head ;
while(p!=NULL)
{ if(p->data= = x)n++;
p= p->next;
return(n);
}
}
这是网上找的那部分,请帮忙弄下主函数对接,谢谢啦
花了5分钟给你编了一个。
#include <stdio.h>
#include<malloc.h>
typedef struct LNode
{
int data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//创建一个带头结点的空链表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void Creat(LinkList L,int x)//创建链表
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
int count(LinkList L,int x)
{
LinkList p;
int n=0;
p= L->next;
while(p!=NULL)
{
if(p->data==x)
n++;
p=p->next;
}
return(n);
}
void main()//主函数
{
LinkList L,p;int x,i,n;
L=InitList();
printf("请输入链表节点的个数:\n");
scanf("%d",&n);
printf("请输入%d个元素:\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&x);
Creat(L,x);
}
printf("请输入要查找的元素\n");
scanf("%d",&x);
printf("元素为%d的节点有%d个",x,count(L,x));
}