《数据结构》课程设计题目.docx

上传人:b****6 文档编号:5607887 上传时间:2022-12-29 格式:DOCX 页数:42 大小:25.46KB
下载 相关 举报
《数据结构》课程设计题目.docx_第1页
第1页 / 共42页
《数据结构》课程设计题目.docx_第2页
第2页 / 共42页
《数据结构》课程设计题目.docx_第3页
第3页 / 共42页
《数据结构》课程设计题目.docx_第4页
第4页 / 共42页
《数据结构》课程设计题目.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

《数据结构》课程设计题目.docx

《《数据结构》课程设计题目.docx》由会员分享,可在线阅读,更多相关《《数据结构》课程设计题目.docx(42页珍藏版)》请在冰豆网上搜索。

《数据结构》课程设计题目.docx

《数据结构》课程设计题目

《数据结构》课程设计题目

(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);

}

vectormonkeyCircle;

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<c;

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&dest){

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<name<<";"<department<<";"<base_pay<<";"<allowance<

out.close();

}

return0;

}

intshowData(){

vectorresult;

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++)

cout<

cout<

 

for(inti=0;i

cout<

cout<

return0;

}

题目5:

一元多项式的减法(学时:

6)

设有两个一元多项式A(x),B(x),请完成运算A(x)+B(x)、A(x)-B(x),要求多项式采用链表进行存储。

另外该任务要求具有建立多项式链表以及输出多项式到屏幕的功能。

/*

DataStructureExperiment-Project5

Author:

BirdLiu(LiuXin)

CreatedDate:

2015-04-27

*/

#include

usingnamespacestd;

classPolymer{

public:

Polymer(){};

intn;

intpower;

Polymer*next;

};

intcreateChain(Polymer*head){

inthighest;

cout<<"Pleaseinputthehighestpower:

(mustbeabove0)";

cin>>highest;

//Polymer*head=newPolymer;

Polymer*p=head;

for(inti=0;i<=highest;i++){

cout<<"Pleaseinputaofx^"<

";

cin>>p->n;

p->power=i;

Polymer*newPolymer=newPolymer;

p->next=newPolymer;

p=p->next;

}

returnhighest;

}

voidaddPolymer(Polymer*aHead,Polymer*bHead,Polymer*result,intaHighest,intbHighest){

cout<<"Add:

"<

if(aHighest>bHighest){

Polymer*aTemp=aHead;

Polymer*bTemp=bHead;

for(inti=0;i<=aHighest;i++){

if(i<=bHighest){

cout<n+bTemp->n<<"x^"<

aTemp=aTemp->next;

bTemp=bTemp->next;

}

else{

if(i!

=aHighest){

cout<n<<"x^"<

aTemp=aTemp->next;

}

else

cout<n<<"x^"<

}

}

}

else{

Polymer*aTemp=aHead;

Polymer*bTemp=bHead;

for(inti=0;i<=bHighest;i++){

if(i<=aHighest){

cout<n+bTemp->n<<"x^"<

aTemp=aTemp->next;

bTemp=bTemp->next;

}

else{

if(i!

=bHighest){

cout<n<<"x^"<

bTemp=bTemp->next;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1