[求助]小孩报数的问题
题目:设有n个人站成一圈,每个人有不同的编号i,编号从1开始按顺时针方向"1,2,3...."循环报数报到m的人出列,然后从出列者的下一个人重新开始报数,报到m的人又出列,如此重复进行,直到下一个人都出列为止,问题是:对于任意给定的n个人的原始排列顺序和m值,求出n个人的出列顺序.(用顺序表)下面是我编的,编译后没有错误,可是不能执行...问题出在哪?
#include<iostream.h>
#include<stdlib.h>
typedef struct{
int*elem;
int length;
int listsize;
}sqlist;
void main(){
sqlist La,Lb;
int m,n;
cout<<"输入总人数n:"<<endl;
cin>>n;
cout<<"输入m:"<<endl;
cin>>m;
La.length=n;
for(int i=0;i<m-1;i++)
La.elem[i]=i+1;
int *p,*q;
for(int j=0;j<m-1;j++){
if(La.elem[i]==m)
p=&(La.elem[i]);
Lb.elem[j]=La.elem[j];
q=&(La.elem[La.length-1]);
for(++p;p<=q;++p)
*(p-1)=*p;
--La.length;
}
for(int s=0;s<La.length-2;s++)
cout<<Lb.elem[s];
}