江苏大学计算机软件技术基础上机编程文档格式.docx
- 文档编号:21385217
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:18
- 大小:107.29KB
江苏大学计算机软件技术基础上机编程文档格式.docx
《江苏大学计算机软件技术基础上机编程文档格式.docx》由会员分享,可在线阅读,更多相关《江苏大学计算机软件技术基础上机编程文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
,s->
data);
s=s->
next;
intLong(linklist*h)
{inti=0;
linklist*s;
{i++;
return(i);
voidDelete(linklist*h,intk)
linklist*p1,*p2;
p1=h;
if(k==1){h=h->
free(p1);
}
else
{
while(i<
k-1&
&
p1!
i++;
p2=p1;
p1=p1->
p2->
next=p1->
free(p1);
linklist*Nixu(linklist*h)
{linklist*r,*q,*p;
r=h;
p=r->
q=p->
if(h==NULL)
thelinklistisempty\n"
while(q!
=NULL&
h!
{p->
next=r;
r=p;
p=q;
q=q->
h->
next=NULL;
p->
return(p);
main()
{intk,x;
linklist*h;
do
\nqingshurumingling:
1.jianlilianbiao;
2.shuchulianbiaozhongdeneirong;
3.shuchulianbiaodechangdu;
4.shanchudiKgejiedian;
5.jianglianbiaodaoxubingshuchu;
6.tuichuchengxu;
qingshuru1--6deshuzi:
if(x<
1||x>
6)printf("
error!
switch(x)
{case1:
h=Creatlist();
break;
case2:
Putlist(h);
case3:
printf("
lianbiaodechangdushi%d"
Long(h));
case4:
Inputthenodeyouwanttodelete:
k);
Delete(h,k);
case5:
h=Nixu(h);
case6:
exit(0);
while
(1);
上机题二:
二叉树
1.动态交互建立二叉树,结点个数任意;
2.分别用DLR,LDR,LRD三种方式对二叉树进行遍历并输出结果;
3.计算二叉树中结点个数并输出;
4.计算二叉树深度并输出
#include"
stdio.h"
malloc.h"
structTreeNode
{intdata;
structTreeNode*Lchild;
structTreeNode*Rchild;
};
structTreeNode*create()
{structTreeNode*T;
inta;
a);
if(a==0)returnNULL;
else
{T=(structTreeNode*)malloc(sizeof(structTreeNode));
T->
data=a;
Lchild=create();
Rchild=create();
return(T);
voidPre(structTreeNode*T)
{if(T!
=NULL)
{printf("
%5d"
T->
Pre(T->
Lchild);
Rchild);
voidMid(structTreeNode*T)
{
if(T!
{Mid(T->
Mid(T->
voidPost(structTreeNode*T)
{if(T!
{Post(T->
Post(T->
voidvisit(structTreeNode*T)
{printf("
theresultofDLR:
Pre(T);
theresultofLDR:
Mid(T);
theresultofLRD:
Post(T);
intleaf(structTreeNode*T)
{inta,b;
if(T==NULL)return(0);
elseif(T->
Lchild==NULL&
T->
Rchild==NULL)
return
(1);
{a=leaf(T->
b=leaf(T->
return(a+b+1);
intmax(intx,inty)
{if(x>
y)return(x);
elsereturn(y);
intdeep(structTreeNode*T)
{intk=0;
elsereturn(1+max(deep(T->
Lchild),deep(T->
Rchild)));
main()
{intm,n,p;
structTreeNode*T;
createatree\n"
T=create();
1.visitthetree\n"
2.putoutthetotalnumberofnode\n"
3.putoutthedepthofthetree\n"
4.exit\n"
while
(1)
\npleaseinput1-4:
"
m);
if(m==1)visit(T);
if(m==2){n=leaf(T);
thetotalnumberofleavesinthetreeis%d\n"
n);
if(m==3)if(m==3){p=deep(T);
thedepthofthetreeis%d\n"
p);
if(m==4)break;
上机题三图
在交互方式下完成下列任务:
1、根据教材上算法,完成图的深度和广度优先遍历,要求任意给定起始点,输出结果;
2、根据教材上算法,完成图的单源最短路径的算法,要求任意给定源点,输出结果
程序:
#include<
#defineM1000
#defineVNum6
structGLink
{intNo;
intRight;
structGLink*Relat;
};
intG[VNum][VNum]=1
{1,31,11,M,41,M,
M,0,15,50,10,M,
13,M,0,15,M,M,
M,13,M,0,17,M,
M,M,M,26,0,M,
M,M,M,3,M,0};
structGLink*GL[VNum];
intVisited[VNum];
voidCreateGLink(intG[VNum][VNum])
{inti,j;
structGLink*p,*q;
for(i=0;
i<
VNum;
i++)
{GL[i]=q=NULL;
for(j=0;
j<
j++)
{if(i!
=j)
if((G[i][j]>
0)&
(G[i][j]<
M))
{p=(structGLink*)malloc(sizeof(structGLink));
No=j;
Right=G[i][j];
if(GL[i]==NULL)
GL[i]=p;
q->
Relat=p;
q=p;
voidDFS(intA[VNum][VNum],intV)
{inti;
[%d]"
V);
Visited[V]=1;
for(i=0;
i<
VNum;
if((A[V][i]>
(A[V][i]<
M)&
(Visited[i]!
=1))
DFS(A,i);
i++)
if(Visited[i]!
=1)DFS(A,i);
voidBFS(intA[VNum][VNum],intV)
{intCQ[VNum];
inta=0,b,c;
inti,k=1;
i<
i++)
CQ[i]=M;
CQ[0]=V;
[%d]"
V);
while(k<
6&
a<
k)
{b=CQ[a];
for(c=0;
c<
c++)
if(Visited[c]==0&
A[b][c]<
M&
A[b][c]!
=0)
c);
CQ[++k]=c;
Visited[c]=1;
a++;
for(i=0;
if(Visited[i]==0)
BFS(A,i);
voidShort(intA[VNum][VNum],intV)
{intDist[VNum],Path[VNum];
intS=0;
inti,k;
intwm,u;
{Dist[i]=A[V][i];
if(Dist[i]<
M)Path[i]=V;
S=S|(1<
<
V);
for(k=0;
k<
k++)
{wm=M;
u=V;
if(((S&
(1<
i))==0)&
(Dist[i]<
wm))
{u=i;
wm=Dist[i];
u);
((Dist[u]+A[u][i])<
Dist[i]))
{Dist[i]=Dist[u]+A[u][i];
Path[i]=u;
if((S&
i))!
=0)
{k=i;
while(k!
=V)
%d<
-"
k);
k=Path[k];
%d"
=%d\n"
Dist[i]);
elseprintf("
NoPath:
%d"
i);
{inti,j,a,b;
CreateGLink(G);
1.searchthegraphdeepfirst\n"
2.searchthegraphbroadfirst\n"
3.findtheshortestpath\n"
while
(1)
\npleaseinputanumfrom1to4:
if(a==1)
{for(i=0;
Visited[i]=0;
printf("
pleaseinputthefirstnode:
scanf("
j);
\nTheResultofDFSis:
DFS(G,j);
if(a==2)
\nTheResultofBFSis:
BFS(G,j);
}
if(a==3)
pleaseinputthesourcenode:
b);
\nTheResultofShortestpathis:
Short(G,b);
if(a==4)break;
上机题四
检索和排序
1、任意给定无序序列,用对半检索法,交互检索任意给定的关键字KEY;
2、任意给定无序序列,用快速排序法对进行排序,并统计交换次数;
3、任意给定无序序列,用冒泡排序法对进行排序,并统计交换次数和排序的趟数;
#defineM100
structRedType
{intkey;
intother;
inta;
intSearch(structRedTypeST[],intn,intkey)
{intlow,high,mid;
low=0;
high=n-1;
while(low<
=high)
{mid=(low+high)/2;
if(ST[mid].key==key)return(mid+1);
elseif(key<
ST[mid].key)high=mid-1;
elselow=mid+1;
return(0);
intQuickSort(structRedTypeL[],intlow,inthigh)
{inti,j,t=0;
structRedTypetemp;
if(low>
=high)
i=low;
j=high;
temp=L[i];
while(i<
j)
{while((L[j].key>
=temp.key)&
(j>
i))
j--;
if(i<
j){L[i]=L[j];
t++;
}
while((L[i].key<
i++;
j){L[j]=L[i];
L[i]=temp;
\n\nTheQukSortLoop[%d]is:
for(j=0;
j<
a;
%d"
L[j].key);
return(t+QuickSort(L,low,i-1)+QuickSort(L,i+1,high));
voidbubsort(structRedTypeL[],intn)
{inti,j=0,m,fag=1,t=0;
structRedTypex;
while((j<
n)&
(fag>
0))
{fag=0;
for(i=0;
n-1;
if(L[i+1].key<
L[i].key)
{fag++;
x=L[i];
L[i]=L[i+1];
L[i+1]=x;
if(fag)
{j++;
for(m=0;
m<
n;
m++)
L[m].key);
\n\n"
thesortedarrayis:
\nthetimesofsortis:
j);
\nthetotaltimesofexchangeis:
%d\n"
t);
{intb,m,n,i,j;
structRedTypeS[M],T[M];
inputthelengthofthedata:
pleaseinputthedata\n"
a;
S[i].key);
\n1.quicksort\n"
2.bubsort\n"
3.searchthedatayouwanttosee\n"
\npleaseinputanumberfrom1to4:
if(b==1){for(i=0;
T[i].key=S[i].key;
j=QuickSort(T,0,a-1);
%d\n"
if(b==2){for(i=0;
T[i].key=S[i].key;
bubsort(T,a);
if(b==3){printf("
pleaseinputthethekeyvalue:
n=Search(T,a,m);
if(n==0)printf("
can'
tfindthekeyvalue\n"
thelocationofthekeyvalueis:
n);
if(b==4)break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏 大学计算机 软件技术 基础 上机 编程