首页 > 其他 > 详细

2.2.3-4

时间:2019-05-22 11:05:46      阅读:91      评论:0      收藏:0      [点我收藏+]

有序顺序表中删除 s 与 t (s<t)之间的所有元素,若s 或者 t 不合理 或 顺序表为空,提示错误并返回

//删除从s到t之间的元素
/*
void Dele_s_t(Sq &L,int s,int t){
   //应该也需要判断 s 与 t 是否超过了 表长 if(s>t || s<1 || t>L.length || L.length == 0){ printf("错误\n"); return; } int k=0; for(int i=0;i<L.length;i++){ if(L.A[i]<s || L.A[i]>t){ L.A[k] = L.A[i]; k++; } } L.length = k; } 因为表的结构是顺序表 所有 从 s到t 之间的元素应该是相连的关系 只需要找到 第一个比s大 和 第一个比t大 的元素位置 之后 将两个位置之间的 元素 向前移动即可
*/ //优化删除从s_t之间的元素 void Dele_s_t(Sq &L,int s,int t){ int i,j; if(s>=t||L.length==0)return; for(i=0;i<L.length && L.A[i]<s;i++); if(i>=L.length)return; for(j=i;j<L.length && L.A[j]<=t;j++); if(j>=L.length)return;
  //将元素前移
for(;j<L.length;j++){ L.A[i] = L.A[j]; i++; } L.length = i; }

 

2.2.3-4

原文:https://www.cnblogs.com/qing-mo/p/10904455.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!