标签:
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]); } }
标签:
原文地址:http://www.cnblogs.com/GumpYan/p/5746892.html