《数据结构》课程设计题目.docx
- 文档编号:5607887
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:42
- 大小:25.46KB
《数据结构》课程设计题目.docx
《《数据结构》课程设计题目.docx》由会员分享,可在线阅读,更多相关《《数据结构》课程设计题目.docx(42页珍藏版)》请在冰豆网上搜索。
《数据结构》课程设计题目
《数据结构》课程设计题目
(C++)
刘新320130938311
题目1:
猴子选王(学时:
3)
一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:
m及n要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解。
/*
DataStructureExperiment-Project1
Author:
BirdLiu(LiuXin)
CreatedDate:
2015-03-08
*/
#include
#include
#include
usingnamespacestd;
/*ClassDefinition*/
classMonkey{
public:
Monkey(){flag=1;};
Monkey(intnum){initNum=num;flag=1;};
voidsetInitNum(intnum);
voidsetTempNum(intnum);
voidsetFlag(intnum);
intgetInitNum();
intgetTempNum();
intgetFlag();
Monkey*next;
Monkey*last;
private:
intinitNum,tempNum;
intflag;
};
/*ClassFunctionsDefinition*/
voidMonkey:
:
setInitNum(intnum){
initNum=num;
}
voidMonkey:
:
setTempNum(intnum){
tempNum=num;
}
voidMonkey:
:
setFlag(intnum){
flag=num;
}
intMonkey:
:
getInitNum(){
returninitNum;
}
intMonkey:
:
getTempNum(){
returntempNum;
}
intMonkey:
:
getFlag(){
returnflag;
}
/*VectorFunction*/
intrunWithVector(){
/*InitilizeMonkeyGroup*/
intm;
cout<<"Pleaseinputm:
";
cin>>m;
if(m<3){
cerr<<"Notallowed!
"< exit (1); } MonkeymonkeyGroup[m]; for(inti=0;i monkeyGroup[i].setInitNum(i+1); } vector vector : iteratoriter; for(inti=0;i monkeyCircle.push_back(monkeyGroup[i]); } /*Processing*/ intn,leftCount; cout<<"Pleaseinputn: "; cin>>n;leftCount=m; if(n<1){ cerr<<"Notallowed! "< exit (1); } while (1){ if(leftCount>=n){ monkeyCircle.erase(monkeyCircle.begin()+n-1); leftCount--; } else{ n=n-leftCount-1; monkeyCircle.erase(monkeyCircle.begin()+n); leftCount--; } if(leftCount==1){ cout<<"TheKingisNo."< break; } } return0; } /*ChainFunction*/ intrunWithChain(){ /*InitilizeMonkeyGroup*/ intm,n,leftCount; cout<<"Pleaseinputm&n: "; cin>>m>>n; if(m<3){ cerr<<"Notallowed! "< exit (1); } leftCount=m; /*GenerateChain*/ Monkey*head=newMonkey; Monkey*first=newMonkey; head->next=first; Monkey*p=first; for(inti=1;i<=m;i++){ if(i! =m){ p->setInitNum(i); Monkey*newMonkey=newMonkey; p->next=newMonkey; p=p->next; } else{ p->setInitNum(i); p->next=first; } } /*Finder*/ Monkey*temp=head; Monkey*temp2=newMonkey; while(leftCount! =1){ for(inti=1;i temp=temp->next; if(temp->next! =head->next){ temp2=(temp->next)->next; free(temp->next); temp->next=temp2; } else{ head->next=temp; } leftCount--; temp=head; } cout<<"TheKingisNo."<<(head->next)->getInitNum()< return0; } /*MainFunction*/ intmain(intargc,char*argv[]){ intchoose; cout<<"1.Runwithvector"< cin>>choose; if(choose==1) runWithVector(); else{ if(choose==2) runWithChain(); else cerr<<"Notallowed! "< } return0; } 题目2: 字符逆转(学时: 3) 从键盘读入一个字符串,把它存入一个链表(每个结点存储1个字符),并按相反的次序将字符串输出到显示屏。 /* DataStructureExperiment-Project2 Author: BirdLiu(LiuXin) CreatedDate: 2015-03-29 */ #include usingnamespacestd; structNode { charc; Node*next; Node*last; intnum; }; intmain(){ chararray[100]; Node*head=newNode; Node*pBottom=newNode; head->next=NULL; head->last=NULL; Node*p=head; cin>>array; for(inti=0;i<100;i++){ if(array[i]! =0){ Node*pNew=newNode; pNew->c=array[i]; pNew->num=i; pNew->next=NULL; pNew->last=p; p->next=pNew; p=pNew; } else{ pBottom->next=NULL; pBottom->last=p; break; } } while (1){ pBottom=pBottom->last; cout< if(pBottom->last==NULL) break; } return0; } 题目3: 工资核算(学时: 3) 设有一个单位的人员工资有如下信息: name、department、basepay、allowance、total。 现从键盘输入一组人员工资数据并将它们存储到名为paydata的文件中;再从paydata取出工资数据并给每个人的basepay增加100元,增加后将工资数据显示于屏幕(每行1人)。 /* DataStructureExperiment-Project3 Author: BirdLiu(LiuXin) CreatedDate: 2015-04-26 */ #include #include #include #include #include #include usingnamespacestd; classEmployee{ public: stringname; stringdepartment; doublebase_pay; doubleallowance; }; voidsplit(conststring&src,conststring&separator,vector stringstr=src; stringsubstring; string: : size_typestart=0,index; do{ index=str.find_first_of(separator,start); if(index! =string: : npos) { substring=str.substr(start,index-start); dest.push_back(substring); start=str.find_first_not_of(separator,index); if(start==string: : npos)return; } }while(index! =string: : npos); //thelasttoken substring=str.substr(start); dest.push_back(substring); } doublestr2num(strings){ doublenum; stringstreamss(s); ss>>num; returnnum; } intsaveData(Employee*person){ ofstreamout("data",ios: : app); while(out.is_open()){ out< out.close(); } return0; } intshowData(){ vector vector : iteratorq; charbuffer[256]; ifstreamin("data"); if(! in.is_open()){cout<<"Erroropeningfile";exit (1);} doublei,res_base,res_allowance; while(! in.eof()){ in.getline(buffer,100); result.clear(); split(buffer,";",result); for(q=result.begin();q! =result.end();q++){ i++; if(i==3){ res_base=str2num(*q)+100; cout< } else{ if(i==4){res_allowance=str2num(*q);} cout<<*q<<""; if(i==4){cout< } } i=0; } return0; } intmain(){ intchoice=3; while(choice! =0){ cout<<"Pleasechoose: "< (1)Newdata"< (2)Showdata"< cin>>choice; if(choice==1){ Employee*person=newEmployee; cout<<"Pleaseinputthename,department,base_payandallowance: "< cin>>person->name>>person->department>>person->base_pay>>person->allowance; saveData(person); } if(choice==2){ showData(); } } return0; } 题目4: 满足条件的有序表生成(学时: 3) 已知三个有序表A、B、C,它们皆由同一类元素构成,现要求对于表A作以下运算而获得有序表D: 排出A中所有的既在B中又在C中出现的元素。 另外该任务要求具有建立有序表功能以及输出有序表到屏幕的功能。 /* DataStructureExperiment-Project4 Author: BirdLiu(LiuXin) CreatedDate: 2015-04-27 */ #include usingnamespacestd; voidgenerateList(intlist[10]){ for(inti=0;i<10;i++){ for(intj=0;j if(list[i] inttemp=0; temp=list[j]; list[j]=list[i]; list[i]=temp; } } } } intfindElement(inta[10],intb[10],intc[10],intd[10]){ intflag=0; inttemp[10]; for(intk=0;k<10;k++){ for(inti=0;i<10;i++){ for(intj=0;j<10;j++){ if(a[k]==b[i]&&b[i]==c[j]) a[k]=-1; } } } for(inti=0;i<10;i++){ if(a[i]! =-1){ d[flag]=a[i]; flag++; } } returnflag; } intmain(){ intnum; inta[10],b[10],c[10],d[10]; cout<<"PleaseinputarrayA: (Allarenaturalnumbersand10numbersintotal)"< for(inti=0;i<10;i++) cin>>a[i]; generateList(a); cout<<"PleaseinputarrayB: (Allarenaturalnumbersand10numbersintotal)"< for(inti=0;i<10;i++) cin>>b[i]; generateList(b); cout<<"PleaseinputarrayC: (Allarenaturalnumbersand10numbersintotal)"< for(inti=0;i<10;i++) cin>>c[i]; generateList(c); num=findElement(a,b,c,d); for(inti=0;i<10;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 题目