当前位置:编程学习 > C#/ASP.NET >>

数据结构 C#语言版 第2章 线性表(1)

2.2 顺序表

2.2.1 顺序表的定义www.zzzyk.com

在计算机内,保存线性表最简单、最自然的方式,就是把表中的元素一个接一个地放进顺序的存储单元,这就是线性表的顺序存储(Sequence Storage)。线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素,用这种方式存储的线性表叫顺序表(Sequence List)。顺序表的特点是表中相邻的数据元素在内存中位置也相邻。

C#语言中的数组在内存中占用的存储空间就是一组连续的存储空间,因此,数据具有随机存取的特点,所以,数组天生具有表示顺序表的数据存储区域的特点。

随机存取(有时亦称直接存取)代表同等时间存取一组序列中的一个随意元件。反之则称循序存取,即是需要更多时间去存取一个远端元件。


C# 实现顺序表:

[csharp] class SeqList<T>:ConsoleApplication3.ISeqList<T> 

    public int Maxsize{get;set;} 
    private T[] data; 
    public int Last { get; private set; } 
 
    //索引器  
    public T this[int index] 
    { 
        get 
        { 
            return data[index]; 
        } 
        set 
        { 
            data[index] = value; 
        } 
    } 
 
    public SeqList(int size) 
    { 
        data = new T[size]; 
        Maxsize = size; 
        Last = -1; 
    } 
 
    public int GetLength() 
    { 
        return Last + 1; 
    } 
 
    public void Clear() 
    { 
        Last = -1; 
    } 
 
    public bool IsEmpty() 
    { 
        if (Last == -1) 
            return true; 
        else 
            return false; 
    } 
 
    public bool IsFull() 
    { 
        if (Last == Maxsize - 1) 
            return true; 
        else 
            return false; 
    } 
 
    public void Append(T item) 
    { 
        if (IsFull()) 
            Console.WriteLine("List is full"); 
        else 
            data[++Last] = item; 
    } 
 
    public void Insert(T item, int i) 
    { 
        if (IsFull()) 
            Console.WriteLine("List is full"); 
        else if (i < 0 || i > Last + 1) 
            Console.WriteLine("Position is error!"); 
        else if (i == Last + 1) 
            data[++Last] = item; 
        else 
        { 
            for (int j = ++Last; j >i; --j) 
            { 
                data[j] = data[j - 1]; 
            } 
            data[i] = item; 
        } 
    } 
 
    public T Delete(int i) 
    { 
        T tmp = default(T); 
        if (IsEmpty()) 
        { 
            Console.WriteLine("List is empty"); 
            return tmp; 
        } 
        else if (i > Last || i < 0) 
        { 
            Console.WriteLine("Position is error!"); 
            return tmp; 
        } 
        else 
        { 
            tmp = data[i]; 
            for (int j = i; j < Last; j++) 
            { 
                data[j] = data[j + 1]; 
            } 
            --Last; 
            return tmp; 
        } 
    } 
 
    public T GetItem(int i) 
    { 
        if (IsEmpty() || i < 0 || i > Last + 1) 
        { 
            Console.WriteLine("List is empty or Position is error!"); 
            return default(T); 
        } 
        else 
            return data[i]; 
    } 
 
    public int Locate(T value) 
    { 
     

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,