本文共 1631 字,大约阅读时间需要 5 分钟。
要求
创建队列类,采用链式描述 实现卡片游戏 描述 假设桌上有一叠扑克牌,依次编号为1-n(从上至下)。当至少还有两张的时候,可以进行操作:把第一张牌扔掉,然后把新的第一张(原先扔掉的牌下方的那张牌,即第二张牌)放到整叠牌的最后。输入n,输出最后剩下的牌。 格式 输入 一个整数n,代表一开始卡片的总数。 输出 最后一张卡片的值。 样例 输入 100输出
72限制
1s, 64MB for each test case.#include#include using namespace std;template struct chainNode { T element; chainNode *next; chainNode() { } chainNode(const T& element) { this->element = element;} chainNode(const T& element, chainNode * next) { this->element = element; this->next = next;}};template class linkedQueue { public: linkedQueue(int initialCapacity = 10) { queueFront = NULL; queueSize = 0;} ~linkedQueue(); bool empty() const { return queueSize == 0;} int size() const { return queueSize;} T& front() { if (queueSize == 0) exit(1); return queueFront->element; } T& back() { if (queueSize == 0) exit(1); return queueBack->element; } void pop(); void push(const T&); private: chainNode * queueFront; chainNode * queueBack; int queueSize; };template linkedQueue ::~linkedQueue(){ while (queueFront != NULL) { chainNode * nextNode = queueFront->next; delete queueFront; queueFront = nextNode; }}template void linkedQueue ::pop(){ if (queueFront == NULL) exit(1); chainNode * nextNode = queueFront->next; delete queueFront; queueFront = nextNode; queueSize--;}template void linkedQueue ::push(const T& theElement){ chainNode * newNode = new chainNode (theElement, NULL); if (queueSize == 0) queueFront = newNode; else queueBack->next = newNode; queueBack = newNode; queueSize++;}int main(){ int n; linkedQueue lq; cin>>n; for(int i=0;i
转载地址:http://nfwzi.baihongyu.com/