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;}

原创粉丝点击