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,否则返回false

10)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);//添加元素
		}
	}
}

运行结果



                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值