2020-07-09日报博客

2020-07-09日报博客

1.完成的事情:

  • 学习黑马Java教程61-90集。
  • 完成CodeGym练习题

2.遇到的问题:

  • Java内存划分。

3.明日计划:

  • 开始完成小学期任务的实验报告。

  • 继续学习Java。

  • #include<iostream>
    using namespace std;
    
    struct Person {
    	int id;
    	Person* next;
    };
    
    class Ring {
    private:
    	int n, m;
    	Person* head;
    public:
    	Ring() { this->head = NULL; }
    	void set(int N);
    	void Delete(int id);
    	void Main();
    };
    
    void Ring::set(int N) {
    	head = new Person;
    	head->id = 1;
    	head->next = NULL;
    	Person* p = head, * q = NULL;
    	for (int i = 2; i <= this->n; i++) {
    		q = new Person;
    		q->id = i;
    		q->next = NULL;
    		p->next = q;
    		p = q;
    	}
    	p->next = head;
    }
    
    void Ring::Delete(int _id) {
    	Person* p = head, * q = NULL;
    	if (head->id == _id) {
    		while (p->next != head) {
    			q = p;
    			p = p->next;
    		}
    		head = head->next;
    		p->next = head;
    	}
    	else {
    		while (p->id != _id) {
    			q = p;
    			p = p->next;
    		}
    		q->next = p->next;
    	}
    }
    
    void Ring::Main() {
    	int i = 0, l = 0, startId;
    	cout << "请输入总人数n: ";
    	cin >> this->n;
    	cout << "请输入报数的最大次数m: ";
    	cin >> this->m;
    	cout << "请输入报数开始的序号: ";
    	cin >> startId;
    	set(n);
    	Person* p = head, * q;
    	for (int j = 0; j < startId - 1; j++) {
    		q = p;
    		p = p->next;
    	}
    	while (l < n - 1) {
    		q = p;
    		p = p->next;
    		i++;
    		if (i == m) {
    			l++;
    			cout << q->id << " ";
    			Delete(q->id);
    			i = 0;
    		}
    	}
    	cout << head->id << endl;
    }
    int main() {
    	Ring ring;
    	ring.Main();
    }
    
posted @ 2020-07-09 21:10  巩云龙  阅读(133)  评论(0编辑  收藏  举报