/* The reason I gave up on this: * I thought I'd need to somehow track the first "node", so I wanted to * experiment on a more naive implementation. I don't. * Also, the dumb algorithm is still by far fast enough. So, Python it is. */ #include #include using namespace std; struct CNode { size_t id; CNode *prev = NULL, *next = NULL; }; struct Circular { vector nodes; Circular(size_t size) { for (size_t i = 0; i < size; i++) { nodes.push_back(CNode{i}); } // pointers to stuff in a vector? how risque! for (size_t i = 0; i < size - 1; i++) { nodes[i].next = &nodes[i+1]; nodes[i+1].prev = &nodes[i]; } CNode *f = &nodes.front(); CNode *b = &nodes.back(); f->prev = b; b->next = f; } void print() { } }; int main() { int n; vector input; while (scanf("%d ", &n) == 1) { input.push_back(n); } Circular c(input.size()); }