puking


私信TA

用户名:puking

访问量:11570

签 名:

等  级
排  名 285
经  验 3331
参赛次数 0
文章发表 20
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

1065
浏览:568
1028
浏览:522
统计字符 (C语言描述运用ctype.h)
浏览:843

解题思路:

圈刚好是一个单项循环链表,每次出圈就是free掉一个链表结点


注意事项:


链表操作要细心


参考代码:

#include <stdio.h>

#include <stdlib.h>

typedef struct node{

int data;

struct node* next;

}list,*listp;

void creatlist(listp L,int n);

void printlist(listp L);

listp quitlist(listp L,int m);

int main()

{

int n,m;

while(scanf("%d%d",&n,&m)==2){

listp L=(listp)malloc(sizeof(list));

if(L==NULL)

exit(-1);

L->next=NULL;

creatlist(L,n);


listp p=quitlist(L,m);

printlist(p);

}

return 0;

}

void creatlist(listp L,int n)

{

int i;

L->data=1;

listp p=L;

for(i=2;i<=n;i++){

listp q=(listp)malloc(sizeof(list));

q->data=i;

p->next=q;

p=q;

}

p->next=L;

}

void printlist(listp L)

{

listp p=L;

do{

printf("%d ",p->data);

p=p->next;

}while(p!=L);

}

listp quitlist(listp L,int m)

{

listp q,p=L;

int temp=m-1;

while(p->next!=p){

while(temp--){

q=p;

p=p->next;

}

q->next=p->next;

p->next=NULL;

free(p);

temp=m-1;

p=q->next;

}

return p;

}


 

0.0分

0 人评分

  评论区