#include <iostream>
#include <stdlib.h>
using namespace std;
class node {
public:
int data;
node *next;
};
class LinkList {
public:
LinkList() {
head = new node;
head->data = 1;
head->next = head;
}
void CreateLinkList();
void DeleteNode();
private:
node *head;
node *q;
node *l;
node *p;
int n;
int m;
};
void LinkList::CreateLinkList() {
cout << "请输入需要创建单向链表的结点个数:";
cin >> n;
int i ; q=head;
for(i=2;i<n+1;i++) {
p = new node;
p->data=i;
q->next = p;
p->next = head;
q=p;
}
}
void LinkList::DeleteNode(){cout<<"请输入开始的位置"<<endl;
cin>>m;
l=head;
while(l->next!=l)
{
node *del;
del=l->next;
l->next=del->next;
l=del->next;
cout<<"第"<<del->data<<"号被删除"<<endl;
delete del;
}
m=(l->data+m-2)%n;
cout<<m;
}
main() {
cout<<"游戏规则:创建n个点围成一个循环,选择一个点删除,求最后剩下的点" <<endl;
LinkList k;
int n;
k.CreateLinkList();
k.DeleteNode();
}
c链表约瑟夫环
于 2017-12-09 14:23:09 首次发布