数据结构练习题 约瑟夫环—用循环链表实现

来源:互联网 发布:考试宝典怎么样知乎 编辑:程序博客网 时间:2024/06/06 00:15

技术有限,如有错误,多谢指正

#include"stdio.h"#include"stdlib.h"/*writer id: liu*/typedef struct Node{  int id;  int password;  struct Node* next;}Node;void CreatList(Node *phead,int n){  int i = 1;  Node *pnew = NULL;  Node *p = NULL;  p=phead;  p->next = NULL;   phead->id = i;    scanf("%d",&phead->password);  do  {    i++;    pnew=(Node *)malloc(sizeof(Node));    pnew->id = i;    scanf("%d",&pnew->password);    p->next = pnew;    p = p->next;    pnew->next = NULL;  }while(i<n);  pnew->next=phead;}int operate(Node* phead,int m,int n){  int i = 1;  int j = 0;  int k = 0;    Node *p=phead,*q;   for (j=1;j<=n;j++)   {        for(i=1;i<m;i++)          p=p->next;        m=p->password;        k++;        if(k<=n-1) printf("%d ",p->id);        else printf("%d",p->id);        p->id=p->next->id;        p->password=p->next->password;        q=p->next;        p->next=p->next->next;        free(q);   }}int main(){  int n = 0;  int m = 0;  int i = 0;  int j = 0;  Node *phead = NULL;  phead=(Node *)malloc(sizeof(Node));  phead->next = NULL;   //printf("Please input N and M:\n");  scanf("%d%d",&n,&m);  CreatList(phead,n);  operate(phead,m,n);}
1 0
原创粉丝点击