📄 02051321.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -