数据结构基础线性表详解
Posted 有头发的程序猿#
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构基础线性表详解相关的知识,希望对你有一定的参考价值。
一,约瑟夫环
1.据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什么地方才能避免被处决。Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
该问题可以引导我们对线性表的理解
二.线性表
1.线性表的定义:
线性表(linear list)是由n(n≧0)个相同类型的数据元素(结点)a1,a2, …an组成的有限序列。一个有n个数据元素的线性表常常表示为(a1,a2,…an)
其中:
- n:数据元素的个数,也称表的长度
- 空表:n=0,记为()
2.线性表的特点:
- 有且仅有一个节点a1,没有直接前驱,有且仅有一个直接后驱a2
- 有且仅有一个节点an,没有直接后驱,有且仅有一个直接前驱an-1
- 除第一个节点外,其他节点都有一个直接前驱和一个直接后驱
3.线性表的抽象数据结构:
ADT 线性表(linearlist)
数据元素 可以是任意类型,只要同属一个数据对象即可;
数据关系 数据元素之间呈线性关系,假设线性表中有n个元素(a1, a2,a3,…,an),则对每一个元素ai(i=1,2,…,n-1)都存在关系(ai,ai+1),并且a1无前趋,an无后继。数据操作 将对线性表的基本操作定义在接口ILinarList中,代码如下:
public interface ILinarList<E>
boolean add(E item); //添加元素
boolean add(int index, E item);//插入元素
E remove(int index); //删除元素
int indexOf(E item); //定位元素
E get(int index); //取表元素
E set(int index,E item);//替换元素
int size(); //求线性表长度
void clear();//清空线性表
boolean isEmpty(); //判断线性表是否为空
以上是关于数据结构基础线性表详解的主要内容,如果未能解决你的问题,请参考以下文章