Java程序设计题解与上机指导(第四版)第七章 Java语言的高级特性 7.2借助泛型定义一个线性表
线性表:由相同类型的对象组成的一个线性结构
360百科:定义
线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。在稍复杂的线性表中,一个数据元素可由多个数据项(item)组成,此种情况下常把数据元素称为记录(record),含有大量记录的线性表又称文件(file)。线性表中的个数n定义为线性表的长度,n=0时称为空表。在非空表中每个数据元素都有一个确定的位置,如用ai表示数据元素,则i称为数据元素ai在线性表中的位序。线性表的相邻元素之间存在着序偶关系。如用(a1,…,ai-1,ai,ai+1,…,an)表示一个顺序表,则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i=1,2,…,n-1时,ai有且仅有一个直接后继,当i=2,3,…,n时,ai有且仅有一个直接前驱 。
特征
1.集合中必存在唯一的一个"第一元素"。2.集合中必存在唯一的一个 "最后元素" 。3.除最后一个元素之外,均有 唯一的后继(后件)。4.除第一个元素之外,均有 唯一的前驱(前件)。
基本操作折叠基本操作
1)MakeEmpty(L) 这是一个将L变为空表的方法2)Length(L) 返回表L的长度,即表中元素个数3)Get(L,i) 这是一个函数,函数值为L中位置i处的元素(1≤i≤n)4)Prior(L,i) 取i的前驱元素5)Next(L,i) 取i的后继元素6)Locate(L,x) 这是一个函数,函数值为元素x在L中的位置7)Insert(L,i,x)在表L的位置i处插入元素x,将原占据位置i的元素及后面的元素都向后推一个位置8)Delete(L,p) 从表L中删除位置p处的元素9)IsEmpty(L) 如果表L为空表(长度为0)则返回true,否则返回false10)Clear(L)清除所有元素11)Init(L)同第一个,初始化线性表为空12)Traverse(L)遍历输出所有元素13)Find(L,x)查找并返回元素14)Update(L,x)修改元素15)Sort(L)对所有元素重新按给定的条件排序16) strstr(string1,string2)用于字符数组的求string1中出现string2的首地址例题代码
折叠
/*借助范式定义一个线性表*/ import java.util.ArrayList; //java.util 是实用工具类库,提供了一些实用的方法和数据结构。ArrayList:详细介绍见大佬博客:https://www.cnblogs.com/xinhuaxuan/p/6344150.html import java.util.List; public class ListDemo {//定义一个类 public static void main(String args[]) { int numberLength=10;//定义一个参数存放数字长度 int deleteNumber=5;//定义一个参数存放要删除的数字5 List<Integer>list =new ArrayList<Integer>();//List<Integer>定义了List只能存放integer类,别的类型会报错;此处list为integer init(numberLength,list);//调用函数 delete(deleteNumber,list);//调用删除数字函数 print(list);//打印结果 } private static void print(List<Integer>list) { for(int i=0;i<list.size();i++)//遍历数字,打印结果;size()方法:查看list泛型有多少个元素 { System.out.print(list.get(i)+"\t");//get获取数据 } } private static void delete(int deleteNumber,List<Integer>list) { for(int i=0;i<list.size();i++)//遍历数字 { if((int)list.get(i)==deleteNumber)//找到要删除的数;(int)强制类型转换 { list.remove(i);//删除对象i;List的Remove方法在删除元素的时候总会保持下标连续。例如,删掉第一个元素的时候,后面的元素会依次往前覆盖。 } } } private static void init(int numberLength,List<Integer>list) { for(int i=1;i<=numberLength;i++)//往List里添加1~10数字 { list.add(i);//添加元素 } } }
运行结果
[code] 阅读更多
- 一个例子帮你搞懂C#语言高级特性系列(05) --- 语言集成查询(LINQ)
- java高级特性之泛型
- Java高级特性之泛型
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结—— 第七章 虚拟机类加载机制
- java中如何定义一个泛型函数?
- 一个例子帮你搞懂C#语言高级特性系列(04) --- 匿名类型
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(2)-- 变量和常用数据类型
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(5)-- 运算符
- java面向对象高级特性:泛型
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(6)-- 表达式、语句、块
- Java学习备忘录(五)高级语言特性篇(原创)
- Java高级特性之new一个内部类
- Java 高级语言特性
- Java高级特性之泛型学习总结
- Java高级特性之泛型
- Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(3)-- 基本数据类型的默认值
- 一个例子帮你搞懂C#语言高级特性系列(01) --- 运算符重载
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识
- Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合