- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
2024年计算机考研
算法必背100题
顺序表、栈、队列2
KMP44
树47
图78
查找、排序、其他算法87
408精选算法题100
1
顺序表、栈、队列
1.顺序表的插入元素操作
引入:如果我们要实现ListInsert(SeqList*L,inti,ElemTypee),即在顺序表L中的第i个
位置插入新元素e,应该如何操作?
1.如果插入位置不合理,结束程序,输出异常信息
2.如果线性表长度大于或者等于数组长度,结束程序,输出异常信息
3.从顺序表的最后一个元素开始向前遍历到第i个位置,依次将其向后移动一个位置。
4.将元素插入指定位置i处
5.表长增加1
下面在第三个存储位置插入元素作为例子,其中new为要插入的新元素。
//初始条件:顺序线性表L已存在,1≤i≤ListLength(L)
//操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
intListInsert(SeqList*L,inti,ElemType*e){
intk;
if(L-length==MAXSIZE)/*顺序线性表已经满*/
returnERROR;
if(i1||iL-length+1)/*当i不在范围内时*/returnERROR;
if(i=L-1ength){/*若插入数据位置不在表尾*/
for(k=L-length-1;k=i-1;k--)/*将要插入位置后的数据元素向后移动
一位*/
L-data[k+1]=L-data[k];
}
L-data[i-1]=e;/*将新元素插入*/
L-length++;
returnOK;
}
在上述代码中,核心语句为for循环里面的判断,对顺序表进行插入操作,应该先进
行位置移动,然后才能进行插入操作。所以顺序线性表的插入,时间复杂度为O(n)。
2
2.顺序表的删除元素操作
假如你要从一个顺序线性表删除某个元素,实现ListDelete(SqList*L,inti,ElemType*e),
即在L中的第i个位置删除一个元素e,应该如何操作呢?
首先整理算法思路:
1.如果删除的元素位置不正确,结束程序,输出异常信息
2.取出删除元素,放在元素e中
3.从删除元素位置开始遍历到最后一个元素位置,分别将它们向前移动一个位置
4.表长减去1
图2-8删除前
图2-9删除后
//初始条件:顺序线性表L已存在,1≤i≤List.Length(L)
//操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
intListDelete(SqList*L,inti,ElemType*e){
intk;
if(L-length==0)/*线性表为空*/
returnERROR;
if(i1||iL-length)/*删除位置不正确*/
returnERROR;
*e=L-data[i-1];
if(iL-1ength){/*如果删除不是最后位置*/
for(k=i;kL-length;k++)/*将删除位置后继元素前移*/
L-data[k-1]=L-data[k];
}
L-length--;
returnOK;
}
该删除算法关键步骤是:从删除元素位置开始遍历到最后一个元素位置,分别依次将它
们向前移动一个位置,然
您可能关注的文档
- 2025-2026学年七年级地理上学期期中试卷(沪教版)参考答案解析+答题卡.pdf
- 2025年东南欧大学生数学竞赛试题真题(含参考答案).docx
- 2026高考作文热点素材:张家界四十天荒野求生挑战赛(事件+适用主题+应用范例+范文).docx
- 2026高考作文杨振宁逝世热点素材(金句语录+写作角度+人物事迹+素材运用+时评+范文).docx
- Stein复分析重点梳理:5大主题+典型例题-打通复变函数难点.docx
- 初中中考英语复习:词性转换“铁三角”--名形副词高频互转(全国通用)原卷版+解析版.pdf
- 概率论与数理统计公式定理与性质.pdf
- 高等数学常用基本公式与结论.pdf
- 高考政治、历史知识总结归纳(含真题练习超详细打印版).pdf
- 高中物理、化学、生物、地理知识点归纳汇总超详细(各科可以分开打印).pdf
原创力文档


文档评论(0)