数据结构--顺序线性表

最近学习java,用这门语言温习一下数据结构。


public class List
{
    private int length;
    private int[] array;
    public List()
    {
        length = 0;
        array = new int[20];
    }
    public boolean Insert(int value)
    {
        int j;
        if(length >= 20)
        {
            return false;
        }
        j = length - 1;
        while(j >= 0 && array[j] > value)
        {
            array[j+1] = array[j];
            j--;
        }
        array[j+1] = value;
        length++;
        return true;
    }
    public boolean Delete(int index)
    {
        if(0 == length)
        {
            return false;
        }
        if(index < 1 && index > length)
        {
            return false;
        }
        int i = index - 1;
        while(i < (length - 1))
        {
            array[i] = array[i+1];
            i++;
        }
        length--;
        return true;    
    }
    public void Clear()
    {
        length = 0;
    }
    public int ListLength()
    {
        return length;
    }
    public boolean IsEmpty()
    {
        if(length > 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    public int GetItem(int index)
    {   
        return   array[index-1];
    }
}

还以为java函数中基本类型变量作为参数都是引用形式的,原来和C++一样。
线性表的使用要注意数组下标。
线性表的链式实现:

class List
{
    int data;
    List next;
    List(int val,List L)
    {
        data = val;
        next = L;
    }
    List(int val)
    {
        data =  val;
        next = null;
    }
    void SetNext(List L)
    {
        next = L;
    }
    void SetData(int val)
    {
        data = val;
    }
    int GetData()
    {
        return data;
    }
    List GetNext()
    {
        return next;
    }
}
//测试代码

public class test {
   public static void main(String []args){
     List head = new List(0,null);
     List temp = head;
     for(int i=0;i<=9;i++)
     {
         List node = new List(i,null);
         temp.SetNext(node);
         temp = temp.GetNext();
     }
     temp = head.GetNext();
     while(null != temp)
     {
         System.out.println(temp.GetData());
         temp = temp.GetNext();
     }
   }
}

感觉java都用引用很方便,比C++使用大量的指针安全多了。内存也不用自己去析构,很方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性表是一种常见的数据结构,它表示具有相同数据型的一组元素的有序序列。线性表元素之间存在一种顺序关系,每个元素都有一个前驱和一个后继(除了第一个元素没有前驱,最后一个元素没有后继)。线性表可以用顺序存储结构或链式存储结构实现。 在顺序存储结构线性表元素按照顺序存储在连续的内存空间,可以通过元素的下标来访问和操作元素。插入或删除元素时,需要移动其他元素,因此操作的时间复杂度较高。 链式存储结构线性表的每个元素都包含一个数据域和一个指针域,指针指向下一个元素。通过指针的链接,元素可以按照任意顺序存储在内存,插入和删除操作只需要改变指针的指向,因此时间复杂度较低。 线性表常见的操作包括插入、删除、查找、获取长度等。其插入和删除操作需要注意保持线性表顺序关系。 常见的线性表有数组、链表、栈和队列。数组是最简单的线性表,通过下标可以直接访问元素;链表是动态存储结构,插入和删除操作方便,但访问元素需要遍历链表;栈是一种特殊的线性表,只允许在表的一端进行插入和删除操作;队列也是一种特殊的线性表,只允许在表的一端进行插入操作,在另一端进行删除操作。这些数据结构在实际应用都有各自的应用场景和优缺点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值