10092130138张伟Word文档下载推荐.docx
- 文档编号:19520865
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:28
- 大小:22.42KB
10092130138张伟Word文档下载推荐.docx
《10092130138张伟Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《10092130138张伟Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
list[j-1]=list[j];
(*p_n)--;
return0;
被调用函数:
intsq_delete(list,p_n,x)线性表删除
调试时间:
2010-10-1623:
08:
25
1801
实现环形队列(MAXN不超过100001),要求能够进行进队出队操作,参考课本P15页例程。
#defineN100001
string.h>
chara[N][20];
inthead=0;
inttail=0;
intenq(charch1[]);
intdeq(char*p);
charb[7],c[20];
intq,x;
%s"
b);
if(b[0]=='
e'
)
scanf("
c);
enq(c);
if(enq(c)==0)
"
);
elseif(b[0]=='
d'
x=deq(&
a[head]);
if(x==-2)
printf("
-1\n"
else
%s\n"
a[deq(&
a[head])]);
intenq(charch1[])
tail=(tail+1)%N;
if(tail==head)
if(tail==0)
tail=N-1;
else
tail--;
return1;
strcpy(a[tail],ch1);
intdeq(char*p)
{inth;
if(head==tail)
return-2;
h=head;
head=(head+1)%N;
*p=a[head][0];
returnh;
进队函数intenq(charch1[])出对函数intdeq(char*p)
2010-11-1009:
26:
01
1803
实现线性链表的创建于插入(插入到已有元素之后)
include<
typedefstructnode{intdata;
structnode*link;
}NODE;
NODE*creatlist(intn);
voidinsert(NODE*phead,inta,intb);
NODE*ahead,*p;
intm,q;
intx,y;
m);
ahead=creatlist(m);
%d%d"
x,&
y);
insert(ahead,x,y);
for(p=ahead;
(p->
link)!
=NULL;
p=p->
link)
printf("
%d"
p->
data);
NODE*creatlist(intn)
inti;
NODE*head,*p0,*q;
if(n==0)
return(NULL);
head=(NODE*)malloc(sizeof(NODE));
p0=head;
for(i=1;
(p0->
data));
q=(NODE*)malloc(sizeof(NODE));
p0->
link=q;
p0=q;
p0->
link=NULL;
returnhead;
voidinsert(NODE*phead,inta,intb)
NODE*p0,*q;
q=(NODE*)malloc(sizeof(NODE));
q->
data=b;
if(phead==NULL)
phead=q;
else
p0=phead;
while(p0->
data!
=a&
&
p0->
link!
=NULL)
p0=p0->
link;
q->
link=p0->
线性表创建NODE*createlist(intn)和插入函数voidinsert(NODE*phead,inta,intb)
2010-11-3020:
35:
30
1804
实现字符串的strcat,strsub,strequ操作,参照课本P62例程
#defineN1024
chara[N];
charc[N];
intstrlen(chars[]);
intstrcat(chars1[],chars2[]);
intstrsub(chars1[],inti,intj,chars2[]);
intstrequ(chars1[],chars2[]);
charb[6];
intd,e,n;
gets(a);
while(n--)
if(strequ(b,"
strcat"
)==1)
strcat(a,c);
a);
elseif(strequ(b,"
strsub"
d,&
e);
if(d<
0||e>
strlen(a))
fail\n"
else
{
strsub(a,d,e,c);
c);
strequ"
if(strequ(a,c)==1)
yes\n"
no\n"
intstrlen(chars[])
s[i]!
='
\0'
;
i++);
returni;
intstrcat(chars1[],chars2[])
inti,j,k;
if((i=strlen(s1))+(j=strlen(s2))>
=N)
return0;
for(k=0;
k<
=j;
k++)
s1[i+k]=s2[k];
return1;
intstrsub(chars1[],inti,intj,chars2[])
intm,k;
if(i<
0||i>
=(m=strlen(s1)))
if(j<
0||i+j>
m)
j;
s2[k]=s1[i+k];
s2[k]='
intstrequ(chars1[],chars2[])
inti=0;
while(s1[i]==s2[i]&
s1[i]!
s2[i]!
i++;
if(s1[i]=='
s2[i]=='
intstrcat(chars1[],chars2[])intstrsub(chars1[],intI,intj,chars2)intstrequ(chars1[],chars2[])
2010-10-2823:
1806
实现选择排序
defineM1023
inta[M];
intn,i;
intj,t;
intk;
k=i;
for(j=i+1;
if(a[k]>
a[j])k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
if(i%(n-1)==0&
i>
0)
a[i]);
printf("
2010-10-1912:
14:
10
1807
实现快速排序
#defineM20000
voidquick(inta[],intlow,intup);
intn,k;
intb[M];
b[k]);
quick(b,0,n-1);
n-1;
b[k]);
voidquick(a,low,up)
inta[];
intlow,up;
{inti,j;
intt;
if(low<
up)
i=low;
j=up;
t=a[low];
while(i!
=j)
while(i<
j&
a[j]>
t)
j--;
if(i<
j)a[i++]=a[j];
a[i]<
=t)
i++;
j)a[j--]=a[i];
a[i]=t;
quick(a,low,i-1);
quick(a,i+1,up);
voidquick(inta[],intlow,intup)
28
1808
实现冒泡排序
inta[N];
intm;
n--;
while(n>
j=0;
for(i=0;
if(a[i]>
a[i+1])
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
j=i;
}
n=j;
m;
2010-10-2500:
13
1809
对于n个整数,找出第1小,第2小.....第k小的整数
#defineN1000000
inta[N];
voidquick(intb[],intlow,intup);
inti,k;
intn;
n,&
quick(a,0,n-1);
k-1;
system("
pause"
voidquick(intb[],intlow,intup)
inti,j;
t=b[low];
while(i<
b[j]>
j--;
j)b[i++]=b[j];
b[i]<
i++;
j)b[j--]=b[i];
b[i]=t;
quick(b,low,i-1);
quick(b,i+1,up);
viodquick(intb[],intlowintup)
2010-11-0900:
40:
1810
利用原稀疏矩阵的三元数组a,求转置矩阵的三元数组b,并将其规格化,即按行号递增,若行号相同则按照列号递增的顺序。
参照课本P93.94例程
intg[1000001],f[1000001];
inta[1000001][3],b[1000001][3];
{
intm,n;
intk,c;
while(scanf("
%d%d%d"
m,&
c)!
=EOF)
k=1;
while(k<
=c)
a[k][0],&
a[k][1],&
a[k][2]);
k++;
if(c>
g[i]=0;
=c;
g[a[i][1]]+=1;
f[0]=1;
f[i]=g[i-1]+f[i-1];
j=f[a[i][1]];
b[j][0]=a[i][1];
b[j][1]=a[i][0];
b[j][2]=a[i][2];
f[a[i][1]]=j+1;
%d%d%d\n"
b[i][0],b[i][1],b[i][2]);
2010-11-1718:
53:
12
1811
根据树的层号表示建树,打印树的后序遍历序列。
层号表示法参见课本P117
malloc.h>
#defineM26
#defineN26
structnode{intlev;
chardata;
structnode*child[M];
structnode*parent;
};
typedefstructnodeNODE;
typedefstructdnode{intlev;
}DNODE;
voidlevtree(DNODEa[],intn);
voidaftree(NODE*root1);
DNODEa0[N];
intn0,i;
charc1,c2,c3,c4;
n0);
n0;
{
%c%d%c%c%c%c"
c1,&
a0[i].lev,&
c3,&
a0[i].data,&
c2,&
c4);
levtree(a0,n0);
\n"
voidlevtree(DNODEa[],intn)
NODE*root,*p,*q;
root=(NODE*)malloc(sizeof(NODE));
root->
lev=a[0].lev;
data=a[0].data;
M;
root->
child[i]=NULL;
parent=NULL;
p=root;
for(i=1;
q=(NODE*)malloc(sizeof(NODE));
q->
lev=a[i].lev;
data=a[i].data;
for(j=0;
q->
child[j]=NULL;
while(q->
lev<
=p->
lev)
p=p->
parent;
parent=p;
{
if(p->
child[j]==NULL)
{p->
child[j]=q;
break;
}
p=q;
aftree(root);
voidaftree(NODE*root1)
{intii;
if(root1!
for(ii=0;
ii<
ii++)
aftree(root1->
child[ii]);
%c"
root1->
层次建立树voidlevtree(DNODEa[],intn)后序遍历树voidaftree(NODE*root)
2010-12-2209:
19:
51
1812
给定一个有根二叉树,规定连接两个节点的每条边长度是1,定义树的深度为根到叶子节点距离的最大值
intm=1,n=0;
inti,j=0;
intk,l;
intn1,n2=0;
while(m!
=0)
n1=m;
m=0;
n1;
j++;
if(x>
m++;
if(y>
n2++;
if(j==k)
m=0;
n2);
2010-12-2215:
12:
39
1814
二叉树T中,如果非叶子结点都有两棵非空子树,那么称二叉树T是一棵完全二叉树。
现在根据边的连接情况判断一棵树是否是完全二叉树。
defineN1025
inta[N]={0},n;
j);
m=n-1;
while(m--)
{scanf("
a[x]=a[x]+1;
a[y]=a[y]+1;
if(a[j]==2||a[j]==0)
a[j]=3;
a[j]=2;
N;
if(a[i]==2)
break;
if(i>
2010-12-1516:
20:
48
1815
我们大家都学习了Huffman算法,给出每一个点的权值,它可以求出一个具有最小加权外部路径的二叉树,也就是使造价W(k1)*Lk1+...+W(kn)*Lkn(树枝长度为根结点到叶结点边数)最小的二叉树。
现在由你来完成这项工作
#defineN10001
typedefstructnode
intdata;
structnode*lchild;
structnode*rchild;
structnode*parent;
}NODE;
NODE*adr[N];
{NODE*creat(inta[],intn);
intn0,a[N],m,i;
intsum;
NODE*root,*p;
root=creat(a,n0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10092130138