c++.txt
来自「是一个数学的应用问题: 已知n个人(以编号1」· 文本 代码 · 共 90 行
TXT
90 行
#include<iostream.h>
#include<conio.h>
struct People
{
int pwd;
int id;
People *next;
};
class List
{
public:
List(int n);
People* Find(People *p, int m);
int Delete(People *p);
int n;
People* Head() { return head; }
private:
People *head, *tail;
};
List::List(int n)
{
head = NULL;
this->n = n;
for (int i=0; i<n; i++)
{
People *t = new People;
cout << "输入此人持有的密码:";
cin >> t->pwd;
t->id = i+1;
if (head == NULL)
{
head = t;
tail = t;
tail->next = NULL;
}
else
{
tail->next = t;
tail = t;
tail->next = NULL;
}
}
tail->next = head;
}
People* List::Find(People *p, int m) //从p开始寻找,找到第m-1个节点
{
int j = 1;
while (j < m-1)
{
p = p->next;
j++;
}
return p;
}
int List::Delete(People *p) //删除第m个节点,并返回此人密码
{
People *t = p->next;
p->next = t->next;
int k = t->pwd;
cout << "第" << t->id << "个出列" << endl;
delete t;
return k;
}
void main(void)
{
List l(7);
int j = 0;
int m;
cout << "请输入初始上限:";
cin >> m;
People *temp = l.Head();
cout << "出列顺序为: " << endl;
while (j < l.n)
{
People *p = l.Find(temp, m);
m = l.Delete(p);
temp = p->next;
j++;
}
getch();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?