版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——数据结构试验实习题答案试验一线性表
1.设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表依旧有序。
分析:其实这个题在学C语言时就已经写过了,这里采用顺序表来存储数据。主要就是考虑插入的位置是不是在最终一个,假使不在最终一个,那么就要移动数据了,算法很简单就不再说了,这里的数据都看成是整型的。源程序:
//1.1.c
#include
#include
voidInsert(int*p,intlength,intn){//插入函数
inti,j;
intflag=0;
if(n>=p[length-1]){//n比最大数还要大时
p[length]=n;
flag=1;
}
else{
for(i=length-2;i>=0;i--){if(n>=p[i]){//插入n
for(j=length;j>=i+2;j--){
p[j]=p[j-1];
}
p[i+1]=n;
flag=1;
break;}
}
}
if(flag==0){//n为最小数时
for(j=length;j>=1;j--){p[j]=p[j-1];
}
p[0]=n;
}
}
intmain(){
intL[10]={1,3,6,8,9,10,15};//初始化一个非递减速有顺表
intlength=7;//初始化表长
inti,x;
printf(\插入前的顺序表为:\\n\
for(i=0;i
staticintn;
staticintm;
staticintmax;
structPolynomial{//多项式系数结构体
floatdata;
structPolynomial*next;};
structPolynomial*Creat_H(intk){//创立多项式系数的链表
structPolynomial*L;
structPolynomial*p;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
L=p;
floattemp;
inti;
printf(\请依次输入系数(中间用空格隔开):\\n\
for(i=0;idata=temp;
if(i==k){p->next=NULL;break;
}
p->next=(structPolynomial*)malloc(sizeof(structPolynomial));
p=p->next;
}
returnL;}
structPolynomial*Calculate(structPolynomial*Pa,structPolynomial*Pb){
//计算两个多项式相加
structPolynomial*Pc;
structPolynomial*L;
inti;
max=n>=m?n:m;
Pc=(structPolynomial*)malloc(sizeof(structPolynomial));
L=Pc;
for(i=0;inext=NULL;break;
}
Pc->next=(structPolynomial*)malloc(sizeof(structPolynomial));
Pc=Pc->next;
}
Pc=L;
while(Pa!=NULL
Pc=Pc->next;
Pa=Pa->next;
Pb=Pb->next;
}
if(Pa==NULL){//Pa的长度小于Pb
while(Pb!=NULL){Pc->data=Pb->data;Pc=Pc->next;Pb=Pb->next;
}
}
elseif(Pb==NULL){//Pb的长度小于Pa
while(Pa!=NULL){Pc->data=Pa->data;Pc=Pc->next;Pa=Pa->next;
}
}
returnL;}
intmain(){
inti;
structPolynomial*Ha,*Hb,*Hc;
printf(\请输入多项式a的最高次系n:\\n\
scanf(\
Ha=Creat_H(n);
printf(\请输入多项式b的最高次系m:\\n\
scanf(\
Hb=Creat_H(m);
Hc=Calculate(Ha,Hb);
printf(\系数:次数:\\n\
for(i=0;inext;
}
system(\
return0;}
3.设有n个人围坐在一个圆桌周边,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到m的人又出列,如此重复,直到所有的人全部出列为止。Josephus问题是:对于任意给定的n,m,s,求出按出列次序得到的n个人员的顺序表。
分析:这题用单循环链表来做,数到m的结点就删除它,再用一个数组依次保存这些被删除的结点里的数据,一直到循环链表为空就行了。源程序:
//1.3.c
#include
#include
structJosephus{
intdata;
structJosephus*next;};
intmain(){
structJosephus*J;
structJosephus*L;
structJosephus*temp;
J=L;
inti,j;
intk=0;
intn,m,s;
int*p;
printf(\请输入n,m,s(中间用空格隔开:)\\n\
scanf(\
p=(int*)malloc(n*sizeof(int));
for(i=1;idata=i;
if(i==n){L->next=J;break;
}
L->next=(structJosephus*)malloc(sizeof(structJosephus));
L=L->next;
}//创立一个Josephus环
if(s==1){
for(i=1;inext;
}
}
else{
while(J->data!=s-1){J=J->next;
}
}
while(k!=n){//依次找出数到m的人
for(i=1;inext;
}
p[k++]=J->next->data;
temp=J->next;
J->next=temp->next;
free(temp);
}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河南工业和信息化职业学院单招综合素质考试备考试题带答案解析
- 2026年贵州轻工职业技术学院高职单招职业适应性考试备考题库有答案解析
- 土地合作开发协议2025年项目推广
- 2026年贵州工商职业学院高职单招职业适应性考试备考题库带答案解析
- 2026年湖北三峡职业技术学院高职单招职业适应性测试备考题库有答案解析
- 2026年广州番禺职业技术学院单招综合素质笔试备考题库带答案解析
- 2026年湖北生物科技职业学院单招综合素质考试参考题库带答案解析
- 2026年福建信息职业技术学院单招综合素质笔试模拟试题带答案解析
- 2026年朔州陶瓷职业技术学院单招职业技能考试备考试题附答案详解
- 2026年安徽林业职业技术学院单招综合素质考试备考试题带答案解析
- 基础土方回填施工工艺方案
- 2025年苏州工业园区领军创业投资有限公司招聘备考题库及一套答案详解
- 2025年湖南省长沙市辅警招聘考试试题库带答案
- 成人泌尿造口护理(TCNAS+49─2025)
- 天一大联考海南省2026届数学高二上期末统考试题含解析
- DB50∕T 1803-2025 乡村振兴劳务品牌人员等级评定 武陵山缝纫工
- 电镀供货合同范本
- 党支部2026年度主题党日活动方案
- 2025年山西大地环境投资控股有限公司社会招聘116人备考题库完整答案详解
- 海姆立克急救课件 (完整版)
- 2025年互联网营销游戏化营销案例解析可行性研究报告
评论
0/150
提交评论