一、数组
数组我们平常用得非常之多,是比较常见的数据结构,一维数组可以看做是一个顺序存储结构的线性表,二维数组的定义是
“其数据元素为一维数组”的线性表。
数组的用法参见微软的array类:
Code
public abstract class Array : ICloneable, IList, ICollection, IEnumerable
{
//判断Array是否具有固定大小。
public bool IsFixedSize {get;}
//获取Array元素的个数。 a11a12 … a1n a21a22 … a2n … am1 am2… amn(a) 以行为主序 a11a21 … Am1 a12a22 … am2 … a1n a2n… amn
public int Length{get;}
//获取Array的秩(维数)。
public int Rank { get; }
//实现的IComparable接口,在.Array中搜索特定元素。
public static int BinarySearch(Array array, object value);
//实现的IComparable<T>泛型接口,在Array中搜索特定元素。
public static int BinarySearch<T>(T[] array, T value);
//实现IComparable接口,在Array的某个范围中搜索值。
public static int BinarySearch(Array array, int index,
int length,object value);
//实现的IComparable<T>泛型接口,在Array中搜索值。
public static int BinarySearch<T>(T[] array,
int index, int length, T value);
//Array设置为零、false 或null,具体取决于元素类型。
public static void Clear(Array array, int index, int length);
//System.Array的浅表副本。
public object Clone();
//从第一个元素开始复制Array 中的一系列元素
//到另一Array中(从第一个元素开始)。
public static void Copy(Array sourceArray,
Array destinationArray, int length);
//将一维Array的所有元素复制到指定的一维Array中。
public void CopyTo(Array array, int index);
//创建使用从零开始的索引、具有指定Type和维长的多维Array。
public static Array CreateInstance(Type elementType,
params int[] lengths);
//返回ArrayIEnumerator。
public IEnumerator GetEnumerator();
//获取Array指定维中的元素数。
public int GetLength(int dimension);
//获取一维Array中指定位置的值。
public object GetValue(int index);
//返回整个一维Array中第一个匹配项的索引。
public static int IndexOf(Array array, object value);
//返回整个.Array中第一个匹配项的索引。
public static int IndexOf<T>(T[] array, T value);
//返回整个一维Array中最后一个匹配项的索引。
public static int LastIndexOf(Array array, object value);
//反转整个一维Array中元素的顺序。
public static void Reverse(Array array);
//设置给一维Array中指定位置的元素。
public void SetValue(object value, int index);
//对整个一维Array中的元素进行排序。
public static void Sort(Array array);
}
实用多维数组时,不知道是否碰到过这个问题:
int [][]和int [,]
反正我是碰到了,顺便就了解下。
1.在C#中声明这个二维数组,需要在括号中加上一个逗号。数组在初始化时应指定每一维的大小(也称为阶):
Code
int[,] twodim = new int[3, 3];
twodim[0,0] = 1;
twodim[0,1] = 2;
twodim[0,2] = 3;
twodim[1,0] = 4;
twodim[1,1] = 5;
twodim[1,2] = 6;
twodim[2,0] = 7;
twodim[2,1] = 8;
twodim[2,2] = 9;
2.在声明锯齿数组时,要依次放置开闭括号。在初始化锯齿数组时,先设置该数组包含的行数。定义各行中元素个
数的第二个括号设置为空,因为这类数组的每一行包含不同的元素数。之后,为每一行指定行中的元素个数:
这样大概就清楚了吧。有次我定义了锯齿数组,却用二维数组去访问它,结果报错,很让我不解^0^.猪~
自已写了一个稀疏矩阵:
Code
using System;
using System.Collections.Generic;
public struct TupleTri
{
public int i;//行号
public int j;//列号
public int v;//元素
}
public class SparseMatrix
{
private int mu;
private int tu;
private List<TupleTri> elems;
public SparseMatrix()
{
elems=new List<TupleTri>();
}
public void output()
{
foreach(TupleTri tt in elems)
{
Console.WriteLine(+tt.i+" "+tt.j+" "+tt.v);
}
}
public static void Main()
{
SparseMatrix sm=new SparseMatrix();
int[,] matrix={{1,2,0},{2,0,0},{0,0,0}};
int m=matrix.GetLength(0);
int n=matrix.GetLength(1);
sm.mu=m;
sm.tu=n;
TupleTri tt;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(0!=matrix[i,j])
{
tt.i=i;
tt.j=j;
tt.v=matrix[i,j];
sm.elems.Add(tt);
}
}
}
sm.output();
}
}
二、广义表
这个,我大概知道意思,但是没有什么实际可操作的东西,后面二叉树好像有个广义表定义的。我还得后面去试一试。
在二叉树的里面有个用广义表实现的二叉树建立,于是。。。。
Code
using System;
public class ListTree
{
private TreeNode p;
private static int i=0;
private string target;
public ListTree(string str)
{
target=str;
}
public TreeNode listCreate(string str)
{
target=str;
p=null;
// Console.WriteLine(i+" ");
if(target[i]>='A' && target[i] <='Z')
{
p=new TreeNode(target[i]);
i++;
Console.WriteLine(p.data);
if(target[i]=='(')
{
i++;
p.left=listCreate(str);
i++;
p.right=listCreate(str);
i++;
}
}
if(target[i]=='#')
i++;
return p;
}
public static void Main()
{
string str = "A(B(D(#,G),#),C(E,F(H,#)))";
int len=str.Length;
Console.WriteLine(len);
//string str="A(B(E,G),C)";
ListTree lt = new ListTree(str);
BinaryTree bt=new BinaryTree();
lt.listCreate(str);
//bt.root=lt.listCreate();
//TreeNode p=new TreeNode('A');
// Console.WriteLine(lt.listCreate(str));
//bt.preorder();
//Console.WriteLine();
//bt.inorder();
//Console.WriteLine();
// bt.postorder();
}
}
TreeNode类见:
http://www.cnblogs.com/kulong995/articles/1436318.html