精品数据机构中关于线性表的编程习题docWord文件下载.docx
- 文档编号:18349604
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:46
- 大小:52.29KB
精品数据机构中关于线性表的编程习题docWord文件下载.docx
《精品数据机构中关于线性表的编程习题docWord文件下载.docx》由会员分享,可在线阅读,更多相关《精品数据机构中关于线性表的编程习题docWord文件下载.docx(46页珍藏版)》请在冰豆网上搜索。
while(n>
0)
(
p1=(stu)malloc(sizeof(student));
scanf(n%d"
&
p1->
num);
scanf("
%s”,p1->
name);
scanf(n%f'
score1);
%f'
score2);
%r,&
score3);
L->
next=pl;
L=pl;
n-;
)
next=NULL;
}
voidAverageScore(stuL)
Stup;
p=L->
next;
while(p)
p->
average=((p->
score1)+(p->
score2)+(p->
score3))/3;
p=p->
voidList_Sort(stuL)
Stup,q,r,s,l;
1=L;
r=p;
q=p->
while(q)
if(r->
average<
q->
average)
r=q;
q=q->
S=p;
if(s->
average==r->
average&
&
s->
num==r->
num)
p=p->
l->
next=r;
l=r;
else
while(s->
next->
num!
=r->
s=s->
s->
next=r->
voidTraverseList(stuL,ElemTypen)
ElemTypei=0;
stup;
i++;
if(i==n&
n>
10)
printf(n%d%s%.2f%.2f%.2f%.2f%d\nH,p->
num,p->
name,p->
score1,p->
score2,p->
score3,p->
averagej);
average,i);
intmain()
ElemTypen;
stuL;
L=(stu)malloc(sizeof(student));
%d"
n);
CreatList(L,n);
AverageScore(L);
List_Sort(L);
TraverseList(L,n);
return0;
实验题目供10题,第2题)
多项式加减乘
5000ms
8000K
有A,B,Cn个关于x的个多项式,求一个关于A,B,C的多项式
描述:
的结果
多项式的每一项之间用空格隔开,每一项的系数,x,指数之间也用空格隔开,
系数为0的项不输出
基于多项式A,B,C......的运算表达式
关于x的多项式A
关于x的多项式B
关于x的多项式C
表达式的运算结果
输出:
含有A,B,C……表达式的运算结果,保留两位小数。
输出多项式表达式按指数降序排序
(A+B)*(A・B)
输入样例:
A1x2.I3x-3.09
B2x12x0
输出样例:
1.00x4.20-4.00x2.00-8.00x1.00-4.00x0.006.00x-0.99
9.00x-6.18
提不:
••元多项式的表达及相加参见第39页,表达式求值参见第52页
实验题目(共10题,第3题)
描述:
输出:
迷宫是-个二维矩阵,其中1为墙,0为路,3为入I1,4为出II.要求从入II开始,从出
口结束,按照下佐,上,右的顺序来搜索路径.
迷宫宽度w迷宫高度h迷宫第一行
迷宫第二行
迷宫第h行
横坐标n-1纵坐标n-1
出口横坐标n出口纵坐标n
81011111111101101011010010111031011
100100411000011110100101101000111111000111111111
输出祥例:
33
23
24
25
35
36
37
47
46
45
44
54
64
提示:
使用栈
参见教材50页
#include<
stdlib.h>
#defineNMAX1024
intmazefNMAX][NMAX];
typedefstructpoint2D
intx;
inty;
}PosType;
typedefstructsElemtype
intord;
PosTypeseat;
intdi;
}SelemType;
typedefstructSqstack
SelemType*top;
SelemType*base;
intstacksize;
}sqstack;
voidCreatMaze(intw,inth)
inti,j;
for(i=0;
i<
h;
i++)
for(j=0;
j<
w;
j++)
scanf(,,%d"
maze[i][j]);
voidInitstack(sqstack&
s)
s.base=(SelemType*)malloc(NMAX*NMAX*sizeof(SelemType));
if(!
s.base)
printf(”存储分配失败!
,
s.top=s.base;
s.stacksize=NMAX*NMAX;
voidFootPrint(PosTypecurpos)
maze[curpos.x][curpos.y]=-1;
boolpass(PosTypecurpos)
if(maze[curpos.x][curpos.y]==0)
returntrue;
returnfalse;
voidPushstack(sqstack&
s,SelemTypee)
s.top->
ord=e.ord;
seat.x=e.seat.x;
seat.y=e.seat.y;
di=e.di;
s.top++;
voidNextPos(PosType&
curpos,inta)
switch(a)
case1:
curpos.x++;
break;
case2:
curpos.y-;
break;
case3:
curpos.x-;
case4:
curpos.y++;
boolStackEmpty(sqstacks)
if(s.base==s.top)
voidPopstack(sqstack&
s,SelemType&
e)
s.top—;
e.ord=s.top->
ord;
e.seat.x=s.top->
seat.x;
e.seat.y=s.top->
seat.y;
e.di=s.top->
di;
voidMarkPrint(PosTypecurpos)
mazefcurpos.xlfcurpos.y]=1;
boolMazePath(PosTypestart,PosTypeend,sqstack&
PosTypecurpos;
SelemTypee;
inta=1;
intcurstep=1;
〃探索第一步curpos.x=start.x;
〃设定“当前位置”为“入口位置”curpos.y=start.y;
do
if(pass(curpos))
FootPrint(curpos);
〃留下足迹e.ord=curstep;
e.seat.x=curpos.x;
e.seat.y=curpos.y;
e.di=a;
Pushstack(s,e);
〃加入路径
if((e.seat.x==end.x)&
(e.seat.y==end.y))〃到达终点returntrue;
NextPos(curpos,l);
〃下一位置是当前位置的南邻curstep++;
〃探索下一步
}//if
else〃当前位置不能通过
{if(!
StackEmpty(s))(
Popstack(s,e);
while(e.di==4&
!
StackEmpty(s))(
MarkPrint(e.seat);
〃留下不能通过的标记,并退回一步Popstack(s,e);
curstep—;
)//while
if(e.di<
4)
e.di++;
〃换下一个方向探索Pushstack(s,e);
curpos=e.seat;
NextPos(curpos,e.di);
〃设定当前位置是该新方向上的相邻块}//if
)//else
while(!
StackEmpty(s));
intw,h,i,j;
PosTypeend,start;
intb;
sqstacks,l;
Initstack(l);
Initstack(s);
%d%d"
w,&
h);
CreatMaze(w,h);
for(i=0;
i<
for(j=0;
if(mazefi][jl==3)
start.x=i;
start.y=j;
maze[i][j]=0;
if(maze[i][j]==4)
end.x=i;
end.y=j;
if(MazePath(start,end,s))
s.top--;
b=s・top->
for(i=1;
=b;
Pushstack(Le);
=b;
Popstack(Le);
printf(H%d%d\nr\e.seat.y,e.seat.x);
printf(Hthereisnopassavailable\nn);
实验题目(共io题,第4题)
时限:
内存限制:
总时限:
学生信息管理
1000ms
20000K
用链式存储结构实现对一个班级学生信息管理。
设计程序求出每个人的平均成绩并按平均成绩由高到底排序后输出学生记录。
人数n
人员记录1(格式为:
学号姓名成绩1成绩2成绩3)
人员记录X1
人员记录y2
♦••
人员记录zn
3
1孙俪莉767889
2章子怡725667
3刘德华568490
1孙俪莉76788981.001
输出样例:
3刘德华56849076.672
2章子怡72566765.003
来源:
#defineElemTypeint
typedefstructStudent
charname[IO];
voidCreatList(stuL,ElemTypen)
stup1;
pl->
%s"
pl->
scanf(,'
scanf(*'
%f,,&
scanf(°
%f*,&
q=p->
num!
printf(”%d%s%.2f%.2f%.2f%.2f%d\n”,p・>
nanie,p->
scorel,p->
score2,p・>
average,i);
printf(”%d%s%.2f%.2f%.2f%.2f%d\nH,p->
实验题目(共1()题.第5题)
顺序表上的基本操作实现
10000K
在顺序存储结构实现基本操作:
初始化、创建、插入、删除、查找、遍历、逆描述•
置、合并运算。
请输入线性表La的长度:
n
ala2a3...an(数值有序,为降序)
请输入要插入到线性表La中的数字x和插入的位置i:
xi
请输入要删除数字的位置:
i
请输入要查找的数字:
x
请输入线性表长度:
m
blb2...bm(数值有序,为升序)
创建好的线性表La=ala2...an
插入一个数字后的线性表ala2...an+l
删除一个数字后的线性表ala2...an
查找一个输入的数字后如果找到,输出该数字的位置i,如果没有找到,输出”
没有找到x”的信息。
逆置ala2...an后的线性表anan-l...al
合并两个线性表后的线性表
谿>&
刷请输入线性表La的长度:
5
请输入线性表La中的元素:
14111095
请输入要插入到线性表La中的数字x和插入的位置i:
84
线性表La=141110895
请输入要删除的数字的位置:
4
线性表La=14111095
请输入要查找的数字:
10
找到,10在第3个位置
逆置后的线性表La=59101114
请输入线性表Lb的长度:
请输入线性表Lb中的元素:
1369
合并La和Lb后的线性表为:
135699101114
#defineLISTJNIT_SIZE500
#defineLISTINCREMENT10
#defineOVERFLOW-2
#defineERROR0
#defineOK1
typedefintElemType;
typedefstruct
ElemType*elem;
intlength;
intlistsize;
}SqList;
intInitList_Sq(SqList&
L)
Lelem=(ElemType*)malloc(LISTJNIT_SIZE*sizeof(ElemType));
L.elem)exit(OVERFLOW);
L.length=0;
Llistsize二LISTINITSIZE;
returnOK;
voidCreat_Sq(SqList&
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
L.listsize=LISTINITSIZE;
intListInsert_Sq(SqList&
L,inti,ElemTypee)
int*newbasez*pz*q;
if(i<
l||i>
L.length+l)
returnERROR;
if(L.length>
=L.listsize)
newbase=(ElemType*)realloc(L.elem/
(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(Inewbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize+二LISTINCREMENT;
q=&
(L.elem[i-l]);
for(p=&
(L.elem[Llength-l]);
p>
=q;
—p)
*(p+l)=*p;
*q=e;
++L.length;
intListDelete_Sq(SqList&
L,inti)
int*p/q;
if((i<
l)||(i>
L.length))
p=&
(L.elem[i-1]);
q=L.elem+L.length-1;
for(++p;
p<
++p)
—L.length;
voidLocateEIem_Sq(SqList&
L,intx)
intifflag=0;
for(i=l;
L.length;
if(L.elem[i]==x)
flag=l;
if(flag==l)
printf(M找到,%d在第%€1个位置\n”,x,i+l);
{printf(”没找到\n”);
)voidoutput(SqList&
inti;
printf("
%dM,L.elem[i]);
voidMergeList_Sq(SqListLa,SqListLb,SqList&
Lc)
int*pa/*pb/*pc/*pajast/*pbjast;
pa=La.elem;
pb=Lb.elem;
Lc.listsize=Lc.length=La.length+Lb.length;
pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType));
Lc.elem)exit(OVERFLOW);
paJast
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 数据 机构 关于 线性 编程 习题 doc