leibo
约瑟夫环很简单:#include #include typedef struct node{ int value; struct node *next; }NODE; //建立循环链表(尾插法建立)//NODE *createlink(int number) { NODE *head=NULL,*p=NULL,*q=NULL; int i=1; head=(struct node*)malloc(sizeof(struct node)); //***建立第一个节点***// head->value=i; p=head; for(i=2;i<=number;i++) { q=(struct node*)malloc(sizeof(struct node)); if(q==0) return 0; p->next=q; p=q; p->value=i; } p->next=head; return head; } //建立约瑟夫环void jose(NODE *p,int number,int n) { int i,j,g=0; NODE *q=NULL; for(i=1;i<=number;i++) { for(j=1;jnext; q=p->next; //***q用来记录要删除的节点p->next=q->next; //****删去q节点p=p->next; printf("第%3d个出圈号是:%3d/n",i,q->value); free(q); } printf("/n"); // p->next=NULL; } //主函数int main( ) { int number=0; int n=0; printf("请输入总人数number和出拳编号n:/n"); scanf("%d",&number); scanf("%d",&n); NODE *head=NULL; head=createlink(number); jose(head,number,n); system("PAUSE"); return 1; } 第二个直接用单链表就可以了,写不下了,你再问一个,我给你第二个的 
1:d1--d2--d3--d4(线形关系)2:(1):执行了n-1次 ,即 o(n) (下面的一样) (2):n, o(n) (3)n-1 , o(n) (4)n*n , o(n*n)
int amass; amass=amass*i; a[i]=amass*2; } printf("结果列表:/n"); for (j=1;j