josef.c

来自「This program can solve Josf problem」· C语言 代码 · 共 84 行

C
84
字号
      /* Loop Linklist with rear point */#define ELEMENT_TYPE int   /* maybe need to change */#include <stdio.h>#include <stdlib.h>typedef struct {    ELEMENT_TYPE number;    ELEMENT_TYPE code;}type;typedef struct Linklist{        type data;        struct Linklist *next;}Node,*Linklist;Linklist Creat_linklist(FILE *fd){     int i=0;     Linklist rear;     Node *new;      ELEMENT_TYPE c;              int flag = 1;     /* have a flag which is initiate 1 and when input '$' change flag to 0 */     rear = (Linklist)malloc(sizeof(Node));    /* allocate memory to rear point */     rear -> next = rear;              while (flag){                          fscanf(fd,"%d",&c);                       if(c != 0){             i++;                            new = (Node *)malloc(sizeof(Node));           new -> data.code = c;           new -> data.number=i;           new -> next = rear -> next;           rear -> next = new;           rear = new;                          }/* if */        else flag=0;    }/* while */   rear->next = rear -> next ->next;   return rear;}Linklist Delete( ELEMENT_TYPE m,Linklist P){        Linklist r;        type a;        int n;        n=1;                while(n!=m){           n++;           P = P->next;        }        r = P->next;        P -> next = P -> next ->next;                return r;}int main(){    Linklist rear,P,r;    int m,n;    int i;    FILE *fd;    type a;    int code;    fd = fopen("Josef.dat","r");    fscanf(fd,"%d",&m);    fscanf(fd,"%d",&n);    rear = Creat_linklist(fd);    fclose(fd);    i=0;    P = rear;        while(i!=n){      i++;      r = Delete( m ,P);      P = r;      m = r->data.code;      printf("%d\n",r->data.number);      free(r);    }    }

⌨️ 快捷键说明

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