1 / 74
文档名称:

数据结构常用算法数据结构算法.doc

格式:doc   页数:74
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构常用算法数据结构算法.doc

上传人:pk5235 2015/12/12 文件大小:0 KB

下载得到文件列表

数据结构常用算法数据结构算法.doc

相关文档

文档介绍

文档介绍:数据结构常用算法集合
void Union(List &La, List Lb) { //
// 将所有在线性表Lb中但不在La中的数据元素插入到La中
int La_len,Lb_len,i;
ElemType e;
La_len = ListLength(La); // 求线性表的长度
Lb_len = ListLength(Lb);
for (i=1; i<=Lb_len; i++) {
GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e
if (!LocateElem(La, e, equal)) // La中不存在和e相同的数据元素
ListInsert(La, ++La_len, e); // 插入
}
} // union
void MergeList(List La, List Lb, List &Lc) { //
// 已知线性表La和Lb中的元素按值非递减排列。
// 归并La和Lb得到新的线性表Lc,Lc的元素也按值非递减排列。
int La_len, Lb_len;
ElemType ai, bj;
int i=1, j=1, k=0;
InitList(Lc);
La_len = ListLength(La);
Lb_len = ListLength(Lb);
while ((i <= La_len) && (j <= Lb_len)) { // La和Lb均非空
GetElem(La, i, ai);
GetElem(Lb, j, bj);
if (ai <= bj) {
ListInsert(Lc, ++k, ai);
++i;
} else {
ListInsert(Lc, ++k, bj);
++j;
}
}
while (i <= La_len) {
GetElem(La, i++, ai); ListInsert(Lc, ++k, ai);
}
while (j <= Lb_len) {
GetElem(Lb, j++, bj); ListInsert(Lc, ++k, bj);
}
} // MergeList
Status InitList_Sq(SqList &L) { //
// 构造一个空的线性表L。
= (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!) return OK; // 存储分配失败
= 0; // 空表长度为0
= LIST_INIT_SIZE; // 初始存储容量
return OK;
} // InitList_Sq
Status ListInsert_Sq(SqList &L, int i, ElemType e) { //
// 在顺序线性表L的第i个元素之前插入新的元素e,
// i的合法值为1≤i≤ListLength_Sq(L)+1
ElemType *p;
if (i < 1 || i > +1) return ERROR; // i值不合法
if ( >= ) { // 当前存储空间已满,增加容量
ElemType *newbase = (ElemType *)realloc(,
(+LISTINCREMENT)*sizeof (ElemType));
if (!newbase) return ERROR; // 存储分配失败
= newbase; // 新基址
+= LISTINCREMENT; // 增加存储容量
}
ElemType *q = &([i-1]); // q为插入位置
for (p = &([-1]); p>=q; --p) *(p+1) = *p;
// 插入位置及之后的元素右移
*q = e; // 插入e
++; // 表长增1
return OK;
} // ListInsert_Sq
Status ListDelete_Sq(SqList &L, int i, ElemType &e) { //
// 在顺序线性表L中删除第i个元素,并用e返回其值。
// i的合法值为1≤