欢迎来到天天文库
浏览记录
ID:55790449
大小:26.00 KB
页数:4页
时间:2020-06-02
《从第s(s)个人开始报数,数到m的人出圈;再由下一个人.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.约瑟夫问题:n个人围成一圈,从第s(s2、链就得到结果。源程序如下:#include#include#include//使用malloc()函数的库函数#includetypedefstructlinknode{intlvalue;structlinknode*next;}point;intmain(){intn,m,s,node,i;point*p,*q,*r;cout<<"Inputtotalnumber,initialnumberanddistance:";cin>>n>>s>>m;p=(point*)malloc(sizeof(point3、));q=p;for(i=1;i<=n-1;i++){//生成链表q->lvalue=s;s=s%n+1;q->next=(point*)malloc(sizeof(point));q=q->next;}q->lvalue=s;q->next=p;//生成循环链表node=n;r=(point*)malloc(sizeof(point));q=r;while(node>1){if(m==1){r->next=p;node=1;}else{for(i=1;i<=m-2;i++)p=p->next;q->next=p->next;//将数到m的人出圈,链到出列人的链表中q=q->next;4、p->next=p->next->next;p=p->next;node--;}}for(i=1;i<=n-1;i++){//依次打印出列人的序号r=r->next;cout<<"The"<lvalue<next->lvalue<lvalue<5、yzyx都是中心对称的字符串。分析:先将链表的前半部分倒置与后半部分比较,再倒置(设无头节点)。源程序如下:#include#include#include#includetypedefstructlinknode{chardata;structlinknode*next;}point;intmain(){inti,n;point*f,*p,*q,*h,*s;cout<<"Inputthenumberofcharacterstring:";cin>>n;cout<6、cterstring:";p=(point*)malloc(sizeof(point));q=p;for(i=1;i<=n-1;i++){cin>>q->data;q->next=(point*)malloc(sizeof(point));q=q->next;}cin>>q->data;q->next=NULL;f=p;//f为指向字符串单链表的头指针p=NULL;i=0;s=f;while(i<(n/2)){//前半部分倒置q=s;s=s->next;q->next=p;p=q;i++;}if(n%2==1)q=s->next;//跳过中间点elseq=s;h=p;while((p!7、=NULL)&&(q!=NULL)&&(p->data==q->data)){//逐个比较元素值p=p->next;q=q->next;}if((p==NULL)&&(q==NULL))//得到判断结果cout<<"Yes!";elsecout<<"No!";while(h!=NULL){//倒置回来,恢复原来的单链表q=h;h=h->next;q->next=s;s=q;}return1;}3.试设计一个民航公司的自动订票和退票系统的算法。设
2、链就得到结果。源程序如下:#include#include#include//使用malloc()函数的库函数#includetypedefstructlinknode{intlvalue;structlinknode*next;}point;intmain(){intn,m,s,node,i;point*p,*q,*r;cout<<"Inputtotalnumber,initialnumberanddistance:";cin>>n>>s>>m;p=(point*)malloc(sizeof(point
3、));q=p;for(i=1;i<=n-1;i++){//生成链表q->lvalue=s;s=s%n+1;q->next=(point*)malloc(sizeof(point));q=q->next;}q->lvalue=s;q->next=p;//生成循环链表node=n;r=(point*)malloc(sizeof(point));q=r;while(node>1){if(m==1){r->next=p;node=1;}else{for(i=1;i<=m-2;i++)p=p->next;q->next=p->next;//将数到m的人出圈,链到出列人的链表中q=q->next;
4、p->next=p->next->next;p=p->next;node--;}}for(i=1;i<=n-1;i++){//依次打印出列人的序号r=r->next;cout<<"The"<lvalue<next->lvalue<lvalue<5、yzyx都是中心对称的字符串。分析:先将链表的前半部分倒置与后半部分比较,再倒置(设无头节点)。源程序如下:#include#include#include#includetypedefstructlinknode{chardata;structlinknode*next;}point;intmain(){inti,n;point*f,*p,*q,*h,*s;cout<<"Inputthenumberofcharacterstring:";cin>>n;cout<6、cterstring:";p=(point*)malloc(sizeof(point));q=p;for(i=1;i<=n-1;i++){cin>>q->data;q->next=(point*)malloc(sizeof(point));q=q->next;}cin>>q->data;q->next=NULL;f=p;//f为指向字符串单链表的头指针p=NULL;i=0;s=f;while(i<(n/2)){//前半部分倒置q=s;s=s->next;q->next=p;p=q;i++;}if(n%2==1)q=s->next;//跳过中间点elseq=s;h=p;while((p!7、=NULL)&&(q!=NULL)&&(p->data==q->data)){//逐个比较元素值p=p->next;q=q->next;}if((p==NULL)&&(q==NULL))//得到判断结果cout<<"Yes!";elsecout<<"No!";while(h!=NULL){//倒置回来,恢复原来的单链表q=h;h=h->next;q->next=s;s=q;}return1;}3.试设计一个民航公司的自动订票和退票系统的算法。设
5、yzyx都是中心对称的字符串。分析:先将链表的前半部分倒置与后半部分比较,再倒置(设无头节点)。源程序如下:#include#include#include#includetypedefstructlinknode{chardata;structlinknode*next;}point;intmain(){inti,n;point*f,*p,*q,*h,*s;cout<<"Inputthenumberofcharacterstring:";cin>>n;cout<6、cterstring:";p=(point*)malloc(sizeof(point));q=p;for(i=1;i<=n-1;i++){cin>>q->data;q->next=(point*)malloc(sizeof(point));q=q->next;}cin>>q->data;q->next=NULL;f=p;//f为指向字符串单链表的头指针p=NULL;i=0;s=f;while(i<(n/2)){//前半部分倒置q=s;s=s->next;q->next=p;p=q;i++;}if(n%2==1)q=s->next;//跳过中间点elseq=s;h=p;while((p!7、=NULL)&&(q!=NULL)&&(p->data==q->data)){//逐个比较元素值p=p->next;q=q->next;}if((p==NULL)&&(q==NULL))//得到判断结果cout<<"Yes!";elsecout<<"No!";while(h!=NULL){//倒置回来,恢复原来的单链表q=h;h=h->next;q->next=s;s=q;}return1;}3.试设计一个民航公司的自动订票和退票系统的算法。设
6、cterstring:";p=(point*)malloc(sizeof(point));q=p;for(i=1;i<=n-1;i++){cin>>q->data;q->next=(point*)malloc(sizeof(point));q=q->next;}cin>>q->data;q->next=NULL;f=p;//f为指向字符串单链表的头指针p=NULL;i=0;s=f;while(i<(n/2)){//前半部分倒置q=s;s=s->next;q->next=p;p=q;i++;}if(n%2==1)q=s->next;//跳过中间点elseq=s;h=p;while((p!
7、=NULL)&&(q!=NULL)&&(p->data==q->data)){//逐个比较元素值p=p->next;q=q->next;}if((p==NULL)&&(q==NULL))//得到判断结果cout<<"Yes!";elsecout<<"No!";while(h!=NULL){//倒置回来,恢复原来的单链表q=h;h=h->next;q->next=s;s=q;}return1;}3.试设计一个民航公司的自动订票和退票系统的算法。设
此文档下载收益归作者所有