1、j-) L-elemj=L-elemj-1; L-elemi-1=e;length+; return OK;Status ListDelete(SqList *L,int i,ElemType *e )/*删除 删除第I个元素ai */ if (ilength ) return ERROR; *e=L-elemi-1; for(j=i;jelemj-1=L-elemj;length-;2. 顺序表的逆置;void ex2_3(SqList *L) int i,j; ElemType temp; i=0;j=L-length-1; while(ielemi;elemi=L-elemj=temp;
2、 i+; j-; 3.单链表的插入和删除结点算法struct LNode ElemType data; struct LNode *next;Status ListInsert(struct LNode *L,int i,ElemType e) /*在带表头的单链表中在第i个位置插入元素e*/ struct LNode * p,*s; int j; p=*L;j=0; /*注意与前面的区别这里j=0;p=*L;*/ while( p & jnext; j+; if(!p | ji-1) return ERROR;/*找不到*/ s=(struct LNode *) malloc(sizeof(
3、struct LNode);/*找到*/ s-data=e;next=p-/*插入元素*/ p-next=s;/*ListLink_L;Status ListDelete(struct LNode *L,int i,ElemType *e ) /*在带表头的单链表中在第i个位删除结点,并由pe指针返回其值*/ struct LNode * p,*q; while(p-next &i-1 ) if( !(p-next) | ji-1 ) return ERROR; q=p-next=q- *e=q-data; free(q);/*ListDelete*/4. 稀疏矩阵(三元组存储)取元素的值;#
4、define MAXSIZE 100 typedef struct int i, j; /*该非零元的行下标和列下标 */ ElemType e; /* 该非零元的值 */ Triple; /* 三元组类型 */typedef struct Triple dataMAXSIZE + 1; int mu, nu, tu; TSMatrix;ElemType GetData(TSMatrix M,int row,int col)/取矩阵的元素 int p; for(p=1;p=M.tu;p+) if(M.datap.i=row&M.datap.j=col)return M.datap.e; ret
5、urn 0;void SetData(TSMatrix *M,int row,int col,ElemType e) /改矩阵的元素int p,q; p=1; if(e) /e不为0,则在三元组顺序表中查找row行col列的非零元, /若存在row行col列元素,将该元素的值改为e; /若不存在row行col列元素则在三元组顺序表中插入(row,col,e) while(ptu&M-datap.i*M-nu+M-data p.jnu+col) p+; if(M-data p.j=row*M-nu+col&tu) /存在row行col列元素,将该元素的值改为e M-datap.e=e; else
6、 /不存在row行col列元素则在三元组顺序表中插入(row,col,e) for(q=M-tu;q=p;q-) M-dataq+1=M-dataq;datap.i=row;datap.j=col;tu+; /e为0,则在三元组顺序表中查找row行col列的非零元, /若存在row行col列元素,将该元素删除; 5. 二叉树的三种递归遍历,计算叶子结点数目,输出叶子结点typedef struct BiTNode /* 结点结构*/ TElemType data; struct BiTNode *lchild, *rchild; /* 左右孩子指针*/ BiTNode, *BiTree;voi
7、d PreOrderTraverse(BiTree T)/*前序*/ if(T!=NULL) printf(%d ,T-data); PreOrderTraverse(T-lchild);rchild);void InOrderTraverse(BiTree T)/*中序*/ InOrderTraverse(T- printf( InOrderTraverse(T-void PostOrderTraverse(BiTree T)/*后序*/ PostOrderTraverse(T-6.Huffman算法; unsigned int weight; unsigned int parent,lch
8、ild,rchild;HTNode, HuffmanTreeMAXNODE+1;/*数组存储赫夫曼树*/void CreateHuffmanTree(HuffmanTree ht, int *w, unsigned int n)/*w存放n个叶子结点的权值,构造赫夫曼树ht */ unsigned int m,i,s1,s2; if (n=1)return; m=2*n-1; for (i=1;iadjvex; else return -1;int NextAdjVex(ALGraph graph, int v, int w) ArcNode *p; for(p=graph.verticesv.firstarc; p!=NULL; p=p-nextarc) if(p-adjvex=w) if(p-nextarc! return p-nextarc- else return -1; return -1;邻接矩阵存储结构:typedef int AdjType;typedef AdjType AdjMatrixMAXVEXMAXVEX;typedef struc
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1