poj 3750 小孩报数问题(循环链表)
来源:互联网 发布:编程用什么系统 编辑:程序博客网 时间:2024/05/02 01:10
#include <stdio.h>#include <iostream>using namespace std;struct List{//双向链表结构体 char name[20]; struct List *front; struct List *rear;// 后指针 }; List *create(int n){ List *node,*head; head=node=new List; for(int i=1;i<n;i++){ node->rear=new List; node->rear->front=node; node=node->rear; } node->rear=head; head->front=node; return head;}List *move(List *p,int step){ for(int i=1;i<step;i++){ p=p->rear; } return p;}List *remove(List *p){ p->front->rear=p->rear; p->rear->front=p->front; p=p->rear; return p;}int main(){ int n,w,s; cin>>n; List *node,*head; head=node=create(n); for(int i=0;i<n;i++){ cin>>node->name; node=node->rear; } scanf("%d,%d",&w,&s); node=move(head,w); while(node->rear!=node){//循环列表终止条件 node=move(node,s); cout<<node->name<<endl; node=remove(node); } cout<<node->name<<endl; system("PAUSE"); return 0;}