题目中输入一个n,然后输入n个值,在createlist()中已挑选出了这n个值中满足条件的元素创建了一个双链表。请你写一个求双链表长度的算法,在主函数调用该算法求出双链表的长度来。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ok 1
#define error 0
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
struct node *before;
}dullinklist;
dullinklist *createlist(int n)
{
int i,x;
dullinklist *head, *p, *r;
head= (dullinklist *)malloc(sizeof(dullinklist));
head->before=NULL;
r=head;
for(i=1;i<=n;i++)
{
scanf("%d",&x);
if(x%7!=0 && x%3!=0)
{
p=(dullinklist *)malloc(sizeof(dullinklist));
p->data=x;
r->next=p;
p->before=r;
r=p;
}
}
r->next=NULL;
return head;
}
int ListLength(dullinklist *head)
{
int i=0;
dullinklist *p;
p=head->next;
while(p!=NULL){
if((p->data)%7!=0 && (p->data)%3!=0){
i++;}
p=p->next;
}
return i;
}
int main(void)
{
dullinklist *myhead;
int n,mylen;
scanf("%d",&n);
myhead=createlist(n);
mylen=ListLength(myhead);
printf("%d",mylen);
}