知识大全 数据结构考研分类复习真题 第二章 答案[53]
Posted 元素
篇首语:知之者不如好之者,好之者不如乐之者。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[53]相关的知识,希望对你有一定的参考价值。
.[题目分析] 在顺序存储的线性表上删除元素 通常要涉及到一系列元素的移动(删第i个元素 第i+ 至第n个元素要依次前移) 本题要求删除线性表中所有值为item的数据元素 并未要求元素间的相对位置不变 因此可以考虑设头尾两个指针(i= j=n) 从两端向中间移动 凡遇到值item的数据元素时 直接将右端元素左移至值为item的数据元素位置
void Delete(ElemType A[ ] int n)∥A是有n个元素的一维数组 本算法删除A中所有值为item的元素 i= ;j=n;∥设置数组低 高端指针(下标) while(i<j) while(i<j && A[i]!=item)i++;∥若值不为item 左移指针 if(i<j)while(i<j && A[j]==item)j ;∥若右端元素值为item 指针左移 if(i<j)A[i++]=A[j ];
[算法讨论] 因元素只扫描一趟 算法时间复杂度为O(n) 删除元素未使用其它辅助空间 最后线性表中的元素个数是j 若题目要求元素间相对顺序不变 请参见本章三 填空题 的算法
cha138/Article/program/sjjg/201311/23320相关参考