none
关于数组的问题 RRS feed

  • 问题

  • 比如有一个数组a(10)

    a(1)=1

    a(2)=2

    a(3)=3

    a(4)=4

    ……(这里是空的)

    我删除了a(2)的值,要求

     

    a(1)=1

    a(2)=3

    a(3)=4

    a(4)=(这里是空的)

    ……(这里是空的)

    应该怎么做

     

    2011年1月24日 10:25

答案

  • 你这里是打算用顺序表描述队列,这样好了。

      Public Sub Test()
        Dim data() As Integer = New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
        Array.Copy(data, 2, data, 1, data.Length - 2)
        Array.Clear(data, data.Length - 1, 1)
        For Each c In data
          Console.WriteLine(c)
        Next
      End Sub
    


    2011 c# mvp China
    • 已标记为答案 酷.睿 2011年1月26日 6:48
    2011年1月26日 5:55
  • 复制前  1 2 3 4 5 6 7 8 9 10

    复制后  1 3 4 5 6 7 8 9 10

    3~10,一共8个元素,表示往前挪动的数据长度。

    data.Length-要被覆盖的下标+1


    2011 c# mvp China
    • 已标记为答案 酷.睿 2011年1月26日 8:41
    2011年1月26日 8:23

全部回复

  • 有点像链表删节点,把2后面的值往前移,比如a(2)=a(3)
    本帖内容仅供参考,没有任何保证. This post is provided without any warranty.
    2011年1月24日 11:38
    版主
  • 您好

    試試看使用 List

        Dim a As New List(Of Integer)
        a.Add(1)
        a.Add(2)
        a.Add(3)
        a.Add(4)
    
        a.RemoveAt(2) ' 删除了a(2)的值
    

    歡迎參觀我的Blog.NET菜鳥自救會
    2011年1月24日 12:57
  • a(2)=a(3)

    a(3)=a(4)

    ……一路下去,代码应该怎么写?

    2011年1月24日 13:52
  • 你好,

    你可以用循环来实现。

     

     Dim a(10) As Integer

     For i =1 To 8

           a(i) = a(i + 1)

      Next

     

    Best regards


    Liliane Teng [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月25日 12:03
  • 你这里是打算用顺序表描述队列,这样好了。

      Public Sub Test()
        Dim data() As Integer = New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
        Array.Copy(data, 2, data, 1, data.Length - 2)
        Array.Clear(data, data.Length - 1, 1)
        For Each c In data
          Console.WriteLine(c)
        Next
      End Sub
    


    2011 c# mvp China
    • 已标记为答案 酷.睿 2011年1月26日 6:48
    2011年1月26日 5:55
  • 请问"Array.Copy(data, 2, data, 1, data.Length - 2)"

     “Array.Clear(data, data.Length - 1, 1)”
    的“data.Length”是干什么的?

    2011年1月26日 7:11
  • 复制前  1 2 3 4 5 6 7 8 9 10

    复制后  1 3 4 5 6 7 8 9 10

    3~10,一共8个元素,表示往前挪动的数据长度。

    data.Length-要被覆盖的下标+1


    2011 c# mvp China
    • 已标记为答案 酷.睿 2011年1月26日 8:41
    2011年1月26日 8:23