好的,谢谢
[email protected]

解决方案 »

  1.   

    //数据结构实习1.2,Joseph
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream.h>typedef struct LNode{
    //定义数据结构
    int Sequential;
    int SecretCode;
    struct LNode *next;
    }LNode,*LinkList;
       void CreateList(LinkList &L,int n){
    //创造链表
    L=(LinkList)malloc(sizeof(LNode));
        L->next=L;
    L->Sequential=1;
    for(int i=n;i>1;i--){
        LNode *p=(LinkList)malloc(sizeof(LNode));
    p->Sequential=i;
    p->next=L->next;L->next=p;
    }
    }//CreateList
    void InputSecretCode(LinkList &L,int n){
    //依次输入每个人的密码
    LNode *p=L;
        printf("please input secret code");
    for(int i=0;i<n;i++)
    {scanf("%d",&p->SecretCode); p=p->next;}
    }//InputSecretCode
    void Prior(LinkList L,LNode *p,LNode *&q){
        //已知链表L,指向结点的指针p,使q指向p的前趋
    while (q->next!=p) q=q->next;
    }//Prior
    void OutOfRank(LinkList &L,int &m,int n){
    //报数,最后报的人出列,显示出列人的序号
    LNode *p=L;LNode *q=L;
    for(int i=0;i<n;i++){
    for(int j=1;j<m;j++)p=p->next;
            Prior(L,p,q);
    cout << p->Sequential; m=p->SecretCode;
        q->next=p->next;
    free(p);
    p=q->next;
    }
      
    }//OutOfRank
    void main(){
    int n;
        printf("please input people number");cin >> n;
    int m;
    printf("please input m");
    scanf("%d",&m);
    LinkList L;
    CreateList(L,n);
    InputSecretCode(L,n);
    OutOfRank(L,m,n);
    }//main