循环报数
来源:互联网 发布:招生软件 编辑:程序博客网 时间:2024/05/23 01:09
循环报数描述:
输入1个数字和多个字符,中间均以空格隔开。假设数字取值为m(范围1~9),后面字符个数为n。假设n个字符围成一圈,从第一个字母开始循环报数,当数到m以后,第m个字母就出列,直到这n个字母全部出列。最后,按照出列的顺序输出这些字母,中间仍以空格隔开。取值范围:m为1到9, 字符个数n大于1小于20。
运行时间限制:无限制内存限制:无限制输入:第一个为数字,后面为多个字符,均以空格隔开
输出:输出重新排列后的字符,以空格隔开
样例输入:3 a b c d e f g h i样例输出:
c f i d h e b g a答案提示:
关于链表的知识建议采用循环链表
我的代码:
#include<iostream>using namespace std;struct Node{ char data; Node* next;};int main(){char ch;int num;Node * head,*p,*s;head=new Node;//创建头结点p=head;//使指针指向头结点while(cin.get(ch)&&ch!='\n'){if(ch>=48&&ch<=57)num=ch-48;else if(ch!=' '){ s=new Node;//创建一个节点 s->data=ch;//为节点元素赋值 p->next=s;//将节点加入链表 p=s;//将p指针指向新加入的节点。 } } head=head->next;//使头指针指向链表第一个元素 p->next=head;//使链表尾部指向链表的头部Node *p1=head;Node *p2=head;int ss=0;if(num>1){do{p2=p1;//前一个node p1=p1->next;ss++;if(ss==num-1){ss=0;cout<<p1->data<<" ";p2->next=p1->next;//delete p1;//delete操作释放p1指针指向的内存块,但是并不修改p1中的地址值。p1=p2->next;//更新p1的值。}}while(p1!=p2);//当p1,p2相同时,跳出循环cout<<p1->data;//输出链表中唯一的一个元素}else//当num=1时,直接按顺序输出链表{p1=head;cout<<p1->data<<" ";//输出链表第一个元素p1=p1->next;for(;p1!=head;p1=p1->next)//当p1等于头指针时,跳出循环cout<<p1->data<<" ";}return 0;}
0 1
- 循环报数
- 循环报数
- 循环报数
- 循环报数问题
- 圆圈循环报数
- 循环删除报数问题
- 循环报数问题
- java 循环报数
- 循环报数游戏
- 约瑟夫循环报数问题
- 华为上机题,循环报数
- [蓝桥杯][java]循环报数问题
- 华为机试题:循环报数
- 华为机试题-循环报数
- 华为上机 循环报数 java
- 报数—循环链表
- 2014先锋机试题:循环报数
- 2015华为机试-循环报数
- Android学习笔记(0)
- 关于httpHeader和httpbody用法总结
- Android电池驱动(二)(自用)
- OC对象和属性
- Python中的lambda
- 循环报数
- 关于@property的一些小总结
- QQ2013的PC版协议,0825包和0826的数据分析
- MySQL记录非事务性语句-疑问
- Oracle 自定义type的几种写法(转载--备份)
- 还是在csdn做笔记吧
- Handler3
- 自考
- 初识OC