码迷,mamicode.com
首页 > 其他好文 > 详细

线性表(List)

时间:2016-08-07 20:14:06      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

1.什么是线性表(List)?

  零个或多个数据元素的有限序列。

  (1)元素之间是有序的。

  (2)线性表强调是有限的。

2.线性表有哪些操作?

  (1)线性表的创建和初始化,InitList

  (2)判空,ListEmpty(),true-空

  (3)线性表重置为空表,ClearList()

  (4)获取线性表第i个位置的值,GetElem(int i)

  (5)查找线性表中值为x的结点 ,LocateElem(int x)

  (6)在线性表中第i个位置插入值为x的结点 , InsertElem(int x,int i)

  (7)删除线性表的第i个结点  ,DeleteElem(int i)

  (8)求线性表的长度 ,ListLength()

  (9)判断线性表是否已满 ,ListFull()

public class LinearList {  
    private int[] data; //线性表以数组形式存放  
    private int MaxSize;//表空间的最大范围  
    private int Last;   //表当前结点个数,即表长  
    //构造函数  
    public LinearList(int MaxSize) {  
        if(MaxSize>0){  
            this.MaxSize = MaxSize;  
            Last = 0;  
            //创建表空间  
            data = new int [MaxSize];  
        }  
    }  
    //判断线性表是否为空  
    public boolean ListEmpty(){  
        return (Last <=0)?true:false;  
    }  
    //判断线性表是否已满  
    public boolean ListFull(){  
        return(Last >= MaxSize)?true:false;  
    }  
    //求线性表的长度  
    public int ListLength(){  
        return Last;  
    }  
    //求线性表中第i个结点的值  
    public int GetElem(int i){  
        //若存在,返回结点,否则,返回null;  
        return(i<0||i>Last)?null:data[i];  
    }  
    //查找线性表中值为x的结点  
    public int LocateElem(int x){  
        //查找表中值为x的结点,找到则返回该结点的序号;否则返回-1;  
        //若表中值为x的结点有多个,找到的是最前面的一个;  
        for(int i=0;i<Last;i++){  
            if(data[i] == x)return i;  
        }  
        return -1;  
    }  
    //在线性表中第i个位置插入值为x的结点  
    public boolean InsertElem(int x,int i){  
        //在表中第i个位置插入值为x的结点  
        //若插入成功,则返回true,否则返回false  
        //插入位置不合理,插入失败  
          
        if(i<0||i>Last||Last == MaxSize)  
            return false;  
        else  
        {  
            //后移  
            for(int j = Last;j>i;j--)  
                data[j] = data[j-1];  
            //插入  
            data[i] = x;  
            //表长增一  
            Last++;  
            return true;              
        }  
          
    }  
    //删除线性表的第i个结点  
    public boolean DeleteElem(int i){  
        //删除表中第i个结点,若成功,返回true;否则返回false;  
        //第i个结点不存在,删除失败;  
        if(i<0||i>=Last||Last == 0)  
            return false;  
        else  
        {  
            //前移  
            for(int j=i;j<Last-1;j++)  
                data[j] = data[j+1];  
            //表长减1  
            Last--;  
            return true;  
        }  
    }  
    public void display(){  
        System.out.println("当前链表长度:"+ ListLength());  
        for(int i=0;i<Last;i++)  
        {  
            System.out.println("第"+i+"结点为:"+data[i]);  
        }  
    }  

  

线性表(List)

标签:

原文地址:http://www.cnblogs.com/GumpYan/p/5746892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!