- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构算法整理(C语言版).doc
数据结构(C语言版)
第二章 线性表
算法2.1
void Union(List La, List Lb) { // 算法2.1
// 将所有在线性表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
算法2.2
void MergeList(List La, List Lb, List Lc) { // 算法2.2
// 已知线性表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
算法2.3
Status InitList_Sq(SqList L) { // 算法2.3
// 构造一个空的线性表L。
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!L.elem) return OK; // 存储分配失败
L.length = 0; // 空表长度为0
L.listsize = LIST_INIT_SIZE; // 初始存储容量
return OK;
} // InitList_Sq
算法2.4
Status ListInsert_Sq(SqList L, int i, ElemType e) { // 算法2.4
// 在顺序线性表L的第i个元素之前插入新的元素e,
// i的合法值为1≤i≤ListLength_Sq(L)+1
ElemType *p;
if (i 1 || i L.length+1) return ERROR; // i值不合法
if (L.length = L.listsize) { // 当前存储空间已满,增加容量
ElemType *newbase = (ElemType *)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof (ElemType));
if (!newbase) return ERROR; // 存储分配失败
L.elem = newbase; // 新基址
L.listsize += LISTINCREMENT; // 增加存储容量
}
ElemType *q = (L.elem[i-1]); // q为插入位置
for (p = (L.elem[L.length-1]); p=q; --p) *(p+1) = *p;
// 插入位置及之后的元素右移
*q = e; // 插入e
++L.length; // 表长增1
return OK;
} // ListInsert_Sq
算法2.5
Status ListDelete_Sq(SqList L, int i, ElemType e) { //
// 在顺序线性表L中删除第i个元素,并用e返回其值。
// i的合法值为1≤i≤ListLength_Sq(L)。
ElemType *p, *
您可能关注的文档
最近下载
- 成立能源管理体系建设工作领导小组通知.docx
- 2022年鹏程杯5年级数学竞赛真题+解析.pdf
- 牛津译林版(2024)英语七年级上册第一学期期末测试卷(含答案,无音频,含听力原文).pdf VIP
- 实施弹性退休制度暂行办法解读课件PPT.pptx
- 期末复习测试题一(九年级物理).doc VIP
- 2024年农村信用社高管考试试题一.doc
- 2024-2025学年河南省郑州市金水区四年级(上)期末英语试卷(全解析版).docx
- 喜欢新老师(教学设计)-2024-2025学年岭美版(2024)美术一年级上册.docx VIP
- 2024年银行考试-授信业务资格笔试参考题库含答案.docx
- 幼儿园:四个月观察记录.doc
文档评论(0)