本文主要是介绍约瑟夫-链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include iostream
using namespace std;
typedef struct LNode {
int data;
LNode *next;
}LNode,*List;
int main()
{
List head,p,q; //q起到游标的作用
int n,m,i;
head=(List)malloc(sizeof(LNode));
cin>>m>>n;
head->data=1;
head->next=head;
q=head;
for(i=2;i<=n;i++){
p=(List)malloc(sizeof(LNode));
p->data=i;
q->next=p;
p->next=head;
q=p;
} //循环链表创建
q=head;
int sum=n;
int M;
do{
M=m-1;
while(M--){
p=q;
q=q->next;
}
cout<<q->data<<endl; //输出节点元素
p->next=q->next;
free(q); //删除节点
sum--;
q=p->next;
}while(sum!=0);
return 0;
}
这篇关于约瑟夫-链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!