数据结构——求循环节
来源:互联网 发布:清华大学知乎 编辑:程序博客网 时间:2024/06/06 09:31
void change( int n, int m, NODE * head ){ int already_have[10000]={0}; int i,i_1,judge[10000]={0}; NODE *then,*go_on,*check; go_on=head; then=(NODE*)malloc(sizeof(NODE)); go_on->next=then; then->data=n*10/m; then->next=NULL; go_on=then; judge[0]=n; for (already_have[0]=1,i=1,already_have[n]=1,n=n*10%m; already_have[n]!=1; already_have[n]=1,n=n*10%m,i++) { judge[i]=n; then=(NODE*)malloc(sizeof(NODE)); go_on->next=then; then->data=n*10/m; then->next=NULL; go_on=then; } if (n!=0) { for (i_1=0,check=head->next; check!=NULL; check=check->next,i_1++) { if ((n)==judge[i_1]) { break; } } then->next=check; }}NODE * find(NODE * head,int *n){ NODE *point[10000]={0}; NODE *p,*check; int i,i_check,flag=0; for (p=head->next,i=0; p!=NULL; p=p->next,i++) { for (check=p,i_check=0; i_check<i; i_check++) { if (check==point[i_check]) { flag=1; break; } } if (flag==1) { break; } point[i]=p; } if (flag==0) { *n=0; return NULL; } else{ *n=i-i_check; return check; }}