当前位置:编程学习 > JAVA >>

线性表

线性表概述
线性表是最基本、最简单、也是最常用的一种数据结构。在线性表中数据元素之间的关系是线性,数据元素可以看成是排列在一条线上或一个环上。
线性表分为静态线性表和动态线性表,常见的有顺序表(静态的)、单向链表(动态的)和双向链表(动态的)。
线性表的操作主要包括:
(1)计算表的长度n。
(2)线性表是否为空
(3)将元素添加到线性表的末尾
(4)获取第i个元素,0≤i < n。
(5)清除线性表
(6)返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1。
(7)返回列表中最后一次出现指定元素的索引,如果列表不包含此元素,则返回 -1。
(8)将新元素插入第i个位置,0≤i < n,使原来的第i,i+1,…,n–1个元素变为第i+1,i+2,…,n个元素。
(9)更改第i个元素
(10)删除第i个元素,0≤i < n,使原来的第i+1,i+2,…,n–1个元素变为第i,i+1,…,n–2个元素
由此,对线性表抽象数据类型定义List接口如下:
 
List接口
 
[java]  
package list;  
  
public interface List {  
    /** 
     * 将元素添加到线性表的末尾 
     */  
    public void add(Object e);  
      
    /** 
     * 清除线性表 
     */  
    public void clear();  
    /** 
     * 获取i位置的元素 
     * @param i 
     * @return 
     */  
    public Object get(int i);  
    /** 
     * 返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1。 
     * @param e 
     * @return 
     */  
    public int indexOf(Object e);  
    /** 
     * 在i后面插入一个元素e 
     * @param i 
     * @param e 
     */  
    public void insert(int i, Object e);  
    /** 
     * 判断线性表是否为空 
     * @return 
     */  
    public boolean isEmpty();  
    /** 
     * 回列表中最后出现指定元素的索引,如果列表不包含此元素,则返回 -1。 
     * @param e 
     * @return 
     */  
    public int lastIndexOf(Object e);  
    /** 
     *  移除列表中指定位置的元素 
     * @param i 
     */  
    public void remove(int i);  
    /** 
     * 用指定元素替换列表中指定位置的元素(可选操作)。 
     * @param i 
     * @param e 
     */  
    public void set(int i, Object e);  
    /** 
     * 返回线性表的大小 
     * @return 
     */  
    public int size();  
}  
 
 
线性表分为静态线性表和动态线性表,常见的有顺序表(静态的)、单向链表(动态的)和双向链表(动态的)。
线性表的操作主要包括:
(1)计算表的长度n。
(2)线性表是否为空
(3)将元素添加到线性表的末尾
(4)获取第i个元素,0≤i < n。
(5)清除线性表
(6)返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1。
(7)返回列表中最后一次出现指定元素的索引,如果列表不包含此元素,则返回 -1。
(8)将新元素插入第i个位置,0≤i < n,使原来的第i,i+1,…,n–1个元素变为第i+1,i+2,…,n个元素。
(9)更改第i个元素
(10)删除第i个元素,0≤i < n,使原来的第i+1,i+2,…,n–1个元素变为第i,i+1,…,n–2个元素
由此,对线性表抽象数据类型定义List接口如下:
 
List接口
 
 
[java]  
package list;  
  
public interface List {  
    /** 
     * 将元素添加到线性表的末尾 
     */  
    public void add(Object e);  
      
    /** 
     * 清除线性表 
     */  
    public void clear();  
    /** 
     * 获取i位置的元素 
     * @param i 
     * @return 
     */  
    public Object get(int i);  
    /** 
     * 返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1。 
     * @param e 
     * @return 
     */  
    public int indexOf(Object e);  
    /** 
     * 在i后面插入一个元素e 
     * @param i 
     * @param e 
     */  
    public void insert(int i, Object e);  
    /** 
     * 判断线性表是否为空 
     * @return 
     */  
    public boolean isEmpty();  
    /** 
     * 回列表中最后出现指定元素的索引,如果列表不包含此元素,则返回 -1。 
     * @param e 
     * @return 
     */  
    public int lastIndexOf(Object e);  
    /** 
     *  移除列表中指定位置的元素 
     * @param i 
     */  
    public void remove(int i);  
    /** 
     * 用指定元素替换列表中指定位置的元素(可选操作)。 
     * @param i 
     * @param e 
     */  
    public void set(int i, Object e);  
    /** 
     * 返回线性表的大小 
     * @return 
     */  
    public int size();  
}  
 
顺序表
结构模型
图顺序存储结构内存结构示意图 
 
源代码
[java]  
package list;
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,