大家帮我看一下程序哪里错了,是约瑟夫环的!!用TC编的!

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:57:55
#include <stdio.h>
typedef struct {
int num;
int code;
}elemtype;
typedef struct lnode{
elemtype data;
struct lnode *next;
}lnode,*linklist;
creatlist (int n1 ,linklist l1,linklist q2,linklist p2,i
){
int q2;int p2;int l1;int i;
int linklist;
l1=(linklist*) malloc (lnode);
l1->data.num=1;
printf("input no.1 code\n");
scanf("%d",&l1->data.code);
q2=l1;
for (i=2;i<n1+1;i++) {
p2=(linklist*) malloc (lnode);
p2->data.num=1;
printf("input no.%d code\n",i);
scanf("%d",&p2->data.code);
q2->next=p2;
q2=p2;
}
p2->next=l1;
return(l1);
}
getelem(linklist q,int m1, q1) {
int q1;
q1=q;
if(m1==1)
while (q1->next!=q)
{q1=q1->next;}
else
while(--m1!=1)
q=q1;
return(q1);
}
delelem (p1,pointer_1) {
linklist p1;
int

#include<stdio.h>
#include<stdlib.h>
typedef struct list
{
int data;
struct list *next;
}linklist;
void main()
{
int n,m,k,i=1;
linklist head,*p,*q,*l;
printf("enter n:\n");
scanf("%d",&n);
printf("enter m:\n",&m);
scanf("%d",&m);
printf("enter k:\n",&k);
scanf("%d",&k);
l=&head;
p=l;
for(;i<=n;i++)

{
q=(linklist *)malloc(sizeof(head));
p->next=q;
q->data=i;
p=q;
}
p->next=l->next; /*创建循环表*/
p=l->next;
for(i=1;i<m;i++) /*找到m的位置*/
p=p->next;
while(p->data!=p->next->data)
{
for(i=1;i<k-1;i++)
p=p->next;
q=p->next;
printf("%3d",q->data);
p->next=q->next;
p=q->next; /*p指向第k+1个人的位置*/
free(q); /*释放空间*/
}