用C#实现一个数组的问题100分
给出一组int型数组如下(长度已知) 
 0      0      0      ……   0      2      4      5      6      8      2      ……   4      0      0      0……      0      4      3      2   ……   3      0      0      0      …… 
 数组的特征是每隔若干个0后就有若干个自然数   ,现在把0看成空值,现在要实现一个功能,将这个数组里的0全部剔除,将自然数保存在另外定义的数组中,我表达能力不好,举个例子说明下吧   
 如下整型数组   a[10]      {0   0   1   2   3   0   0   0   5   8} 
 我要实现的功能是处理后分成两个数组   b[3]   {1   2   3}   和c[2]   {5   8}    
 同理如果数组是   {0   0   1   2   0   0   3   4   0   0   5}这样就分成3个数组   {1   2}{3   4}{5} 
 原始数组长度是已知的,但是不知道里面有多少个   0,也就是空值,也有可能整个数组全是0或全不是。   
 我不知道说明白了没有,请大家帮忙,多谢
------解决方案--------------------static void Main(string[] args) 
         { 
             int[] a = new int[] { 0, 0, 1, 2, 0, 0, 3, 4, 0, 0, 5 }; 
             List <int[]>  results = new List <int[]> (); 
             int index = 0; 
             while (index  < a.Length) 
             { 
                 while (index  < a.Length && a[index] == 0) 
                 { 
                     index++; 
                 } 
                 if (index  < a.Length) 
                 { 
                     List <int>  newarray = new List <int> (); 
                     while (index  < a.Length&&a[index] != 0) 
                     { 
                         newarray.Add(a[index]); 
                         index++; 
                     } 
                     results.Add(newarray.ToArray()); 
                 } 
             } 
             foreach (int[] ia in results) 
             { 
                 Console.Write( "{ "); 
                 foreach (int var in ia) 
                 { 
                     Console.Write(var); 
                     Console.Write( "  "); 
                 } 
                 Console.WriteLine( "} "); 
             } 
         }
------解决方案--------------------你分成二维数组不好吗? 
 int[] test = { 0,1,2,0,0,3,0,5,1,8,7,0,0,0,0,5,9,4}; 
         int length = test.Length; 
         int[][] need = new int[length][]; 
         for (int i = 0; i  < length; i++) 
         { 
             //具体去比较实现 
         }
------解决方案--------------------List <string>  list = new List <string> (); 
 string s =  "002323001230000 "; 
 string[] ss = s.Split( '0 '); 
 foreach (string s in ss) 
 { 
     if (s != null && s != string.Empty) 
     { 
         list.Add(s); 
     } 
 }   
 ss = list.ToArray(); 
 return ss;
------解决方案--------------------// 未测试   
  List <List <int> >  result = new List <List <int> > (); 
         const int separator = 0; 
         for (int i = 0; i  < source.Length; i++) { 
             if (source[i] != separator) { 
                 if (i == 0 || source[i-1] == 0) { 
                     result.Add(new List <int> ());                     
                 } 
                 result[result.Count - 1].Add(source[i]); 
             }             
         }
------解决方案--------------------