zoukankan      html  css  js  c++  java
  • 数组元素的查找,添加,修改,删除

    数组元素查找:
     
     易错点: 在循环数组 , 进行if 条件判断时, 过早地下结论
     
             某一次比较的失败, 不能说明 整个数组的后续其他元素 也不匹配
            
             只有 所有元素循环完后, 仍 不匹配, 才能 说明 数组中 不存在某个值的元素
            

     数组元素添加 :
     
     向数组的后方添加 新数据 , 保证 null元素都集中在数组的末尾
     
     重点: 寻找 新添加元素 要存放的 下标的位置 ==> 数组中 从前向后, 第一个 值为 null的位置
            
     掌握 一次运行只 添加一个值即可, 循环多次添加 了解即可
     
       
     数组元素修改:

     基于元素查询, 给查询到的 元素 赋新的值即可

     数组元素的删除:
     
     (1) 找到要删除的元素 (if判断, equals比对)
     
     (2) 记录下 所删除元素的 下标值  
     
     (3) 将删除元素 之后的所有元素 向前 平移 , 填充被删除元素, 避免 数组前部 出现 null元素与非空元素 穿插交错
     
      难点: 不在于删除, 而在于 删除元素后的 数组元素整理 (向前平移 )
     
      关于 数组多个元素统一向前 移位 :
     
      注意顺序 : 先移动 移动方向上 最前方的 那个元素 ,避免值被覆盖丢失
     
      难点2: 所删除元素 之后的所有元素 在向前移位时, 注意 循环控制变量的 范围, 避免下标越界(涉及到i+1 或i-1)
     
      关于删除元素的 方案演化(主要是删除后的移位):

      (1) 从 删除位置 到 数组末尾元素, 整体向前 错一位(移位)
     
      (2) 考虑到 数组 内, 最后一个 非空元素 是否能被清空的问题
     
          1) 如果 数组 删除元素之前 未满, 末尾有 null元素, 则 数组的 最后一个非空元素 可以借助于 末尾的null元素的移位,顺带实现赋null

          2) 如果 数组删除元素之前 已满, 则 最后一个非空元素  在向前平移后 将会出现两个值 , 此时需要 手动将其 赋null

      (3) 考虑 将 移位的 循环范围 进一步 缩小 (主要是 后边界的 缩小 )    

          将 循环的 后边界调整为  最后一个 非空元素的 下标

          方案(2)中的 1) 不再可行 , 统一采用 手动 为 最后一个 非空元素 赋 null

  • 相关阅读:
    HDU 1203 01背包变形题,(新思路)
    HDU 2955 变形较大的01背包(有意思,新思路)
    HDU 2191(多重背包转换为01背包来做)
    HDU 1114(没有变形的完全背包)
    HDU2546(01背包加一点点变形)
    HDU 1950(LIS)
    c模拟 页式管理页面置换算法之FIFO
    HDU 1257 最少拦截系统(贪心 or LIS)
    路由选择(codevs 1062)
    钓鱼(洛谷 P1717)
  • 原文地址:https://www.cnblogs.com/pyobbiwitwsai/p/9391969.html
Copyright © 2011-2022 走看看