02051321.c

来自「用C语言实现的猴子选大王的程序」· C语言 代码 · 共 70 行

C
70
字号
#include<stdio.h>
#include<stdlib.h>
struct listNode{
  int data;
  struct listNode * nextPtr;
};
typedef struct listNode LISTNODE;
typedef LISTNODE * LISTNODEPTR;

void create(LISTNODEPTR *,int);
void del(LISTNODEPTR *,int);
main()
{
      LISTNODEPTR startPtr=NULL;
      int n,m,k=1;
      printf("请输入猴子个数.\n");
      scanf("%d",&n);
      create(&startPtr,n);
      printf("请输入每次被淘汰的猴子的序号值.\n");
      scanf("%d",&m);
      printf("被淘汰的猴子的序号依次为:"); 
      while(k<=n-1){
        del (&startPtr,m);
        k++;
        }
        printf("\n大王是:%d",startPtr->data);
        system("PAUSE");
        return 0;
        }
void create(LISTNODEPTR *sPtr,int m)
{
     LISTNODEPTR newPtr,lastPtr=NULL;
     int i;
     for(i=1;i<=m;i++){
        newPtr=(LISTNODEPTR)malloc(sizeof(LISTNODE));
        if(newPtr!=NULL){
           newPtr->data=i;
           newPtr->nextPtr=NULL;
           if(*sPtr==NULL){
              *sPtr=newPtr;
              lastPtr=newPtr;
           }
           else{
              lastPtr->nextPtr=newPtr;
              lastPtr=newPtr;
           }
        }
     }
    lastPtr->nextPtr=*sPtr;
}
void del(LISTNODEPTR * sPtr,int b)
{
     LISTNODEPTR tempPtr,currentPtr;
     int j=1,num;
     tempPtr=* sPtr;
     while(j<=b-2){
       tempPtr=tempPtr->nextPtr;
       j++;
     }
     currentPtr=tempPtr->nextPtr;
     num=currentPtr->data;
     tempPtr->nextPtr=currentPtr->nextPtr;
     *sPtr=tempPtr->nextPtr;
     free(currentPtr);
     printf("%d  ",num);
     }
     
       
     

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?