一些算法源代码Word下载.docx

上传人:b****2 文档编号:13723512 上传时间:2022-10-13 格式:DOCX 页数:12 大小:17.53KB
下载 相关 举报
一些算法源代码Word下载.docx_第1页
第1页 / 共12页
一些算法源代码Word下载.docx_第2页
第2页 / 共12页
一些算法源代码Word下载.docx_第3页
第3页 / 共12页
一些算法源代码Word下载.docx_第4页
第4页 / 共12页
一些算法源代码Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

一些算法源代码Word下载.docx

《一些算法源代码Word下载.docx》由会员分享,可在线阅读,更多相关《一些算法源代码Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

一些算法源代码Word下载.docx

j--)L->

elem[j]=L->

elem[j-1];

L->

elem[i-1]=e;

length++;

returnOK;

}

 

StatusListDelete(SqList*L,inti,ElemType*e)

/*删除删除第I个元素ai*/

if(i<

1||i>

length)returnERROR;

*e=L->

elem[i-1];

for(j=i;

j<

j++)L->

elem[j-1]=L->

elem[j];

length--;

2.顺序表的逆置;

voidex2_3(SqList*L)

{

inti,j;

ElemTypetemp;

i=0;

j=L->

length-1;

while(i<

j)

{

temp=L->

elem[i];

elem[i]=L->

elem[j]=temp;

i++;

j--;

}

3.单链表的插入和删除结点算法

structLNode

ElemTypedata;

structLNode*next;

};

StatusListInsert(structLNode**L,inti,ElemTypee)

{/*在带表头的单链表中在第i个位置插入元素e*/

structLNode*p,*s;

intj;

p=*L;

j=0;

/*注意与前面的区别这里j=0;

p=*L;

*/

while(p&

&

j<

i-1)

{/*找i-1位置的元素*/

p=p->

next;

j++;

if(!

p||j>

i-1)returnERROR;

/*找不到*/

s=(structLNode*)malloc(sizeof(structLNode));

/*找到*/

s->

data=e;

next=p->

/*插入元素*/

p->

next=s;

}/*ListLink_L;

StatusListDelete(structLNode**L,inti,ElemType*e)

{/*在带表头的单链表中在第i个位删除结点,并由pe指针返回其值*/

structLNode*p,*q;

while(p->

next&

i-1)

if(!

(p->

next)||j>

i-1)returnERROR;

q=p->

next=q->

*e=q->

data;

free(q);

}/*ListDelete*/

4.稀疏矩阵(三元组存储)取元素的值;

#defineMAXSIZE100

typedefstruct{

inti,j;

/*该非零元的行下标和列下标*/

ElemTypee;

/*该非零元的值*/

}Triple;

/*三元组类型*/

typedefstruct{

Tripledata[MAXSIZE+1];

intmu,nu,tu;

}TSMatrix;

ElemTypeGetData(TSMatrixM,introw,intcol)

{//取矩阵的元素

intp;

for(p=1;

p<

=M.tu;

p++)

if(M.data[p].i==row&

M.data[p].j==col)returnM.data[p].e;

return0;

voidSetData(TSMatrix*M,introw,intcol,ElemTypee)

{//改矩阵的元素

intp,q;

p=1;

if(e)

{//e不为0,则在三元组顺序表中查找row行col列的非零元,

//若存在row行col列元素,将该元素的值改为e;

//若不存在row行col列元素则在三元组顺序表中插入(row,col,e)

while(p<

=M->

tu&

M->

data[p].i*M->

nu+M->

data[p].j<

row*M->

nu+col)

p++;

if(M->

data[p].j==row*M->

nu+col&

tu)

//存在row行col列元素,将该元素的值改为e

M->

data[p].e=e;

else

//不存在row行col列元素则在三元组顺序表中插入(row,col,e)

for(q=M->

tu;

q>

=p;

q--)

M->

data[q+1]=M->

data[q];

data[p].i=row;

data[p].j=col;

tu++;

//e为0,则在三元组顺序表中查找row行col列的非零元,

//若存在row行col列元素,将该元素删除;

5.二叉树的三种递归遍历,计算叶子结点数目,输出叶子结点

typedefstructBiTNode{/*结点结构*/

TElemTypedata;

structBiTNode*lchild,*rchild;

/*左右孩子指针*/

}BiTNode,*BiTree;

voidPreOrderTraverse(BiTreeT)

{/*前序*/

if(T!

=NULL)

printf("

%d"

T->

data);

PreOrderTraverse(T->

lchild);

rchild);

voidInOrderTraverse(BiTreeT)

{/*中序*/

InOrderTraverse(T->

printf("

InOrderTraverse(T->

voidPostOrderTraverse(BiTreeT)

{/*后序*/

PostOrderTraverse(T->

6.Huffman算法;

unsignedintweight;

unsignedintparent,lchild,rchild;

}HTNode,HuffmanTree[MAXNODE+1];

/*数组存储赫夫曼树*/

voidCreateHuffmanTree(HuffmanTreeht,int*w,unsignedintn)

{/*w存放n个叶子结点的权值,构造赫夫曼树ht*/

unsignedintm,i,s1,s2;

if(n<

=1)return;

m=2*n-1;

for(i=1;

i<

=n;

i++)

{ht[i].weight=w[i-1];

ht[i].parent=0;

ht[i].lchild=0;

ht[i].rchild=0;

for(i=n+1;

=m;

++i){

select(ht,i-1,&

s1,&

s2);

ht[s1].parent=i;

ht[s2].parent=i;

ht[i].lchild=s1;

ht[i].rchild=s2;

ht[i].parent=0;

ht[i].weight=ht[s1].weight+ht[s2].weight;

7.图的关于邻接点的操作;

邻接表存储结构:

typedefcharVexType;

typedefstructArcNode{

intadjvex;

/*该弧所指向的顶点的位置*/

structArcNode*nextarc;

/*指向下一条弧的指针*/

}ArcNode;

typedefstructVNode{

VexTypedata;

/*顶点信息*/

ArcNode*firstarc;

/*指向第一条依附该顶点的弧*/

}VNode,AdjList[MAXVEX];

AdjListvertices;

intvexnum,arcnum;

}ALGraph;

intFirstAdjVex(ALGraphgraph,intv)

{if(graph.vertices[v].firstarc!

return(graph.vertices[v].firstarc)->

adjvex;

elsereturn-1;

intNextAdjVex(ALGraphgraph,intv,intw)

{ArcNode*p;

for(p=graph.vertices[v].firstarc;

p!

=NULL;

p=p->

nextarc)

if(p->

adjvex==w){

if(p->

nextarc!

returnp->

nextarc->

else

return-1;

}

return-1;

邻接矩阵存储结构:

typedefintAdjType;

typedefAdjTypeAdjMatrix[MAXVEX][MAXVEX];

typedefstruc

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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