首页 > 其他分享 >练习五:报数问题

练习五:报数问题

时间:2023-04-07 21:32:00浏览次数:29  
标签:LinkList 结点 name 练习 链表 next 问题 printf 报数

有N个人围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该人出列,然后从下一个人开始报数,仍是报到S个出列,如此重复下去,直到所有的人都出列(总人数不足S个时将循环报数),求出列的顺序     输入:第一行输入人数N(N<=64),接下来每行输入一个人名 (人名不超过15个字符) ,最后一行输入W,S (W < N),用空格间隔     输出:按出列的顺序输出序号和人名,每行输出一条数据 

#include <stdio.h>
#include <stdlib.h>
typedef struct node{
char name[16];
struct node *next;
}
LinkList create(){
LinkList h,r,s;
char name[16];
int N,i;
h=(LinkList)malloc(sizeof(Node));
r=h;
printf("请输入人数:");
scanf("%d",&N);
fflush(stdin);       //清空键盘缓冲区,stdin是指标准输入设备的名字,这里指键盘
printf("请输入%d个姓名:\n",N);
for(i=1;i<=N;i++){
s=(LinkList)malloc(sizeof(Node));
gets(s->name);
r->next=s;
r=s;
}fflush(stdin);
r->next=h->next;     //最后一个结点的next域指向实际第一个结点,建立循环链表
return h;
}void numberOff(LinkList h,LinkList tail){
int W,S,i,count=1;
LinkList p=h->next,q=tail,r;    //q的初值应为最后一个数据结点
printf("请输入W和S:");
scanf("%d%d",&W,&S);
fflush(stdin);
i=1;
while(i<w){
q=p;
p=p->next;
i++;
}              //p指向第W个数据结点,q为其前导
while(p!=p->next){         //当循环链表中只剩一个数据结点时结束循环
i=1;
while(i<S){
q=p;
p=p->next;
i++;
}q->next=p->next;          //删除p所指结点
r=p;
p=p->next;                 
printf("第%d个出列:%s\n",count,r->name);
count++;
free(r);
}printf("第%d个出列:%s\n",count,p->name);
free(p);
free(h);
}int main(){
LinkList head,p;
head=create();
p=head->next;
while(p->next!=head->next){
puts(p->name);             //输出测试链表建立是否正确,注意循环链表最后一个结点在循环外处理
p=p->next;                 //得到链表最后一个数据结点的地址
}puts(p->name);
numberOff(head,p)
return 0;
}


标签:LinkList,结点,name,练习,链表,next,问题,printf,报数
From: https://blog.51cto.com/u_16036037/6176549

相关文章

  • MyBatis常见问题
    Mybatis常见问题1,大于号、小于号在sql语句中的转换使用mybatis时sql语句是写在xml文件中,如果sql中有一些特殊的字符的话,比如<,<=,>,>=等符号,会引起xml格式的错误,需要替换掉,或者不被转义。有两种方法可以解决:转义字符和标记CDATA块。方式一:转义字符<selectid="se......
  • 数量关系和差倍比题目中涉及倍数or百分比的问题
    出现倍数时,记得分清是A比B多n倍A=(n+1)BA是B的n倍A=nB出现百分比,记得1+or1-,否则就是占比倍数题目:百分比题目:......
  • 关于word文字中插入公式后行距发生变化的问题
    1.选择“文字”—“字符间距”—“位置”—“标准”;  2.选择“段落”—“居中对齐”。  ......
  • 数量关系中同余问题
    该题型一般为:取A剩a,取B剩b,取C剩c...,可以通过估算猜数字方式进行做题,but慢了!做题步骤:①找到有除数与余数差一样的一组②最小公倍数作周期,差同差减题目:......
  • MySQL Replication--Failed to flush master info 问题
    问题描述MySQL复制不定期出现问题,报错为:Failedtoflushmasterinfo,但具体原因尚未定位到。涉及代码查看MySQL5.7.34版本的代码:intflush_master_info(Master_info*mi,boolforce){DBUG_ENTER("flush_master_info");assert(mi!=NULL&&mi->rli!=NULL);/*......
  • NVIDIA Geforce Experience无法登陆的问题
    问题描述:NVIDIAGeforceExperience登录时提示“页面无法加载,请检查您的网络连接”问题原因:NVIDIAGeforceExperience登录时需要启用NVIDIAFrameworkSDKService服务,但这个服务不会被GE所启动,需要手动启动服务。(网络上有一部分回答说卸载软件重装,亲测没用!!!)解决方案:1.命令......
  • mysqldump 命令导出数据,解决中文乱码问题
      https://www.cnblogs.com/LoveBB/p/16941639.html mysqldump-uroot-ppassword--add-drop-table--default-character-set=utf8--hex-blobdbname--result-file=F:\backup.sql......
  • Mac Apple 芯片运行 Vue 项目中 node-sass 转为 sass 遇到的问题记录,node-sass 替换成
    背景:前段时间因为某些原因将window笔记本换成MacM1pro,然后运行项目的时候发现高于node12版本的项目中不支持node-sass。记录下解决相关问题之后的记录......
  • 荣耀magicbook安装Linux系统boot fail问题解决
    偶然网上冲浪,发现了Debian系的kalilinux有点意思,刚好手边有一台不怎么用的荣耀magicbook,于是准备装个双系统好不容易下完了kali的镜像,使rufus写入了U盘但是在安装过程中怎么安装都显示bootfail,切换了n个版本的Linux系统,发现还是这样,但是实测Debian11是可以进入引导项的最后所......
  • 使用 AutoRest 遇到的问题
    AutoRest提供读取swagger.json文档,然后生成客户端代码的功能。首先是AutoRest默认使用operationid作为生成对应接口请求方法的名称,而莫得swagger.json文档上面默认没有这个值,所以需要设置。然后就是asp.netcore支持多种请求格式,包括text/json,applicaiton/json等......