C语言 约瑟夫环问题:用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/07 21:08:26
C语言 约瑟夫环问题:用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.
高手帮看看我编的有问题没.最后释放那对吗?在网上看了好些关于这个问题的程序,代码都比较长.(一开始想用数组编,后来发现用数组的话不能定义变长度的数组,有什么方法可以解决.)
#include
#include
struct number
{
\x05int num;
\x05struct number * next;
};
void main ()
{
\x05int m,n;
\x05struct number * p,* head=NULL,* tail;
\x05printf("please input M and N:\n");
\x05scanf("%d %d",&m,&n);\x05\x05 //输入M、N值.
\x05for (int i=1; inum=i;
\x05\x05if(head==NULL)
\x05\x05\x05head=p;
\x05\x05else
\x05\x05\x05tail->next=p;
\x05\x05tail=p;
\x05}
\x05tail->next=head;
\x05
\x05for(i=1; inum = 0)
\x05\x05\x05\x05j++;\x05\x05\x05
\x05\x05}
\x05\x05printf("%d ",p->num);
\x05\x05p->num = 0; //将值输出后置0,下次数数跳过.
\x05}
\x05printf("\n");
\x05p=head; //释放所有节点.
\x05for(i=1; inext;
\x05}
}
最后应该是
//释放所有节点.
\x05for(i=1; inext;
\x05\x05free(p);
\x05}
高手帮看看我编的有问题没.最后释放那对吗?在网上看了好些关于这个问题的程序,代码都比较长.(一开始想用数组编,后来发现用数组的话不能定义变长度的数组,有什么方法可以解决.)
#include
#include
struct number
{
\x05int num;
\x05struct number * next;
};
void main ()
{
\x05int m,n;
\x05struct number * p,* head=NULL,* tail;
\x05printf("please input M and N:\n");
\x05scanf("%d %d",&m,&n);\x05\x05 //输入M、N值.
\x05for (int i=1; inum=i;
\x05\x05if(head==NULL)
\x05\x05\x05head=p;
\x05\x05else
\x05\x05\x05tail->next=p;
\x05\x05tail=p;
\x05}
\x05tail->next=head;
\x05
\x05for(i=1; inum = 0)
\x05\x05\x05\x05j++;\x05\x05\x05
\x05\x05}
\x05\x05printf("%d ",p->num);
\x05\x05p->num = 0; //将值输出后置0,下次数数跳过.
\x05}
\x05printf("\n");
\x05p=head; //释放所有节点.
\x05for(i=1; inext;
\x05}
}
最后应该是
//释放所有节点.
\x05for(i=1; inext;
\x05\x05free(p);
\x05}
帮你改了程序
#include
#include
struct number
{
\x09int num;
\x09struct number * next;
};
void main ()
{
\x09int m, n;
\x09struct number * p, * head=NULL, * tail;
\x09printf("please input M and N:\n");
\x09scanf("%d %d", &m, &n);\x09\x09 //输入M、N值.
\x09for (int i=1; inum=i;
\x09\x09if(head==NULL){
\x09\x09\x09head=p;
tail=p;//注意开始tail也要赋值
}
\x09\x09else
\x09\x09\x09tail->next=p;
\x09\x09tail=p;
\x09}
\x09tail->next=head;
\x09p = tail; //从head开始,记录开始的前一个指针
\x09while(n--) //剩下的数的个数为n\x09\x09\x09\x09\x09
\x09{ int t = m%n; //防止多数太多圈造成时间浪费
\x09\x09for(int j=1; jnext;
number *q = p->next; //要删的数的指针
\x09\x09printf("%d ", q->num); //输出要删的数
\x09\x09p->next = q->next; //要删的数从链表中去掉
free(q);
\x09}
\x09printf("\n");
}
#include
#include
struct number
{
\x09int num;
\x09struct number * next;
};
void main ()
{
\x09int m, n;
\x09struct number * p, * head=NULL, * tail;
\x09printf("please input M and N:\n");
\x09scanf("%d %d", &m, &n);\x09\x09 //输入M、N值.
\x09for (int i=1; inum=i;
\x09\x09if(head==NULL){
\x09\x09\x09head=p;
tail=p;//注意开始tail也要赋值
}
\x09\x09else
\x09\x09\x09tail->next=p;
\x09\x09tail=p;
\x09}
\x09tail->next=head;
\x09p = tail; //从head开始,记录开始的前一个指针
\x09while(n--) //剩下的数的个数为n\x09\x09\x09\x09\x09
\x09{ int t = m%n; //防止多数太多圈造成时间浪费
\x09\x09for(int j=1; jnext;
number *q = p->next; //要删的数的指针
\x09\x09printf("%d ", q->num); //输出要删的数
\x09\x09p->next = q->next; //要删的数从链表中去掉
free(q);
\x09}
\x09printf("\n");
}
C语言 约瑟夫环问题:用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.
用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.写出C程序
C语言纠错,【问题描述】输入2个正整数m和n(m≥1,n≤10 000),输出m n之间所有的Fibonacci数
C语言作业:【问题描述】 输入2个正整数m和n(m≥1,n≤10 000),输出m n 之间所有的Fibonacci数&
C语言,输入数n和m,把低m位移到高m位并输出;如输入123456789 3 输出789123456 不能用数组
求做一个C语言题目约瑟夫问题.M个人围成一个圈,从第一个人开始报数,数到N的人出圈,再由下一个人开始报数,数到N的人出圈
C语言打印下列图形~输入一个数据n,由该数据决定其三角形的行数,输出其三角形的图形,*之间的间隔数也由用户输入m决定例如
/*3、约瑟夫问题约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到
c语言 计算m的n次方 要求输入m、n 输出m的n次方
C语言求解不等式已知不等式 +2!+3!+...+m!‹n,请编程对用户指定的n值计算并输出满足该不等式的m
C语言递归做一个题目数的组合问题.从1,2,…,n中取出m个数,将所有组合按照字典顺序列出.如n=3,m=2时,输出:1
1、(用C语言编写程序)输入n值,输出如图所示平行四边形.(使用循环语句)