- 论坛徽章:
- 0
|
我写的,不如楼上的那位简洁。
typedef struct tagRingElement {
tagRingElement * prev;
tagRingElement * next;
int data;
} RingElement_t;
const int COUNT = 2000;
void main()
{
RingElement_t * num = new RingElement_t[COUNT];
RingElement_t * curdel, * nextdel, * prev, * next, * last;
// num[0]
num[0].data = 1;
num[0].prev = num + COUNT - 1;
num[0].next = num + 1;
// num[1999]
num[COUNT - 1].data = COUNT;
num[COUNT - 1].prev = num + COUNT - 2;
num[COUNT -1].next = num;
for (int i = 1; i < COUNT - 1; i++)
{
num.prev = num + i - 1;
num.next = num + i + 1;
num.data = i + 1;
}
curdel = num;
while (curdel->next != curdel->prev)
{
// store curdel->next->next;
next = curdel->next;
prev = curdel->prev;
nextdel = next->next;
// delete curdel
next->prev = curdel->prev;
prev->next = curdel->next;
curdel = nextdel;
}
last = curdel->next;
cout << last->data << endl;
delete [] num;
}
忘了释放内存了,重贴一遍。
[ 本帖最后由 diabolo 于 2006-12-6 21:39 编辑 ] |
|