K:线性表
1. 线性表在计算机中可以用顺序存储和链式存储两种存储结构来表示。其中用顺序存储结构表示的线性表成为顺序表,用链式存储结构表示的线性表称为链表,链表又有单链表,双向链表,循环链表之分。
2. 线性表是由n(n>=0)个数据元素所构成的有限序列,通常表示为(a0,a1,a2.....an-1)。其中下标i标识数据元素在线性表中的位序号,n为线性表的表长,当n=0时表示该线性表为空表。
3. 对于同一个线性表,其每一个数据元素的值虽然不同,但必须具有相同的数据类型;同时,数据元素之间具有一种线性的或“一对一”的逻辑关系,即:
3.1第一个数据元素没有前驱,这个数据元素也称为开始结点
3.2最后一个数据元素没有后继,这个数据元素也称为终端结点
3.3除了第一个和最后一个数据元素之外,其它数据元素有且仅有一个前驱和一个后继
具有以上逻辑关系的数据结构也称为线性结构,线性表就是一种线性结构。
4. 对于线性表,其长度可以动态的增长或缩短;可以对线性表中的任何数据元素进行访问和查找;其数据元素的插入和删除操作可以在线性表中的任何位置上进行;可以求线性表中指定数据元素的前驱和后继;可以将两个线性表合并成一个线性表,或将一个线性表拆分成为两个或者多个线性子表等。其API如下:
4.1 clear():将一个已经存在的线性表置为空表
4.2 isEmpty():判断线性表是否为空,若为空,则返回true,否则,返回false。
4.3 length():求线性表中的数据元素的个数并返回其值
4.4 get(i):读取并返回线性表中的第i个数据元素的值。其中i的取值范围为0<=i&&i<=length()-1
4.5 insert(i,x):在线性表的第i个数据元素之前插入一个值为x的数据元素。其中i的取值范围为0<=i&&i<=length()。当i==0时,在表头插入x,当i=length()时,表示其在表尾插入x
4.6 remove(i):删除并返回线性表中第i个数据元素。其中i的取值范围为0<=i&&i<=length()-1
4.7 indexOf(x):返回线性表中首次出现指定数据元素的位序号,若线性表中不包含此元素,则返回-1
其API所对应的接口如下(java):
public interface List<T>
{
public abstract void clear();
public abstract boolean isEmpty();
public abstract int length();
public abstract void insert(int i,T x)throws Exception;
public abstract T get(int i)throws Exception;
public abstract int indexOf(T x)throws Exception;
public void remove(int i)throws Exception;
}
K:线性表的更多相关文章
- 2019-02-03 线性表的顺序储存结构C语言实现
#include<cstdio> #define MAXSIZE 20 typedef int Elemtype; //Elemtype类型根据实际情况而定,这里取int typedef ...
- K:线性表的实现—链表
单链表的概念: 采用链式存储方式存储的线性表称之为链表,链表中每个节点包含存放数据元素的值的数据域和存放指向逻辑上相邻节点的指针域.若一个节点中只包含一个指针域,则称此链表为单链表. 单链表的特点: ...
- 7-19 求链式线性表的倒数第K项
7-19 求链式线性表的倒数第K项(20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示 ...
- K:线性表的实现—顺序表
所谓顺序表,就是顺序存储的线性表.顺序存储就是用一组地址连续的存储单元依次存放线性表中各个数据元素的存储结构. 线性表中所有数据元素的类型是相同的,所以每一个数据元素在存储器中占用相同的大小的空间.假 ...
- k:特殊的线性表—栈
栈(Stack): 栈是一种特殊的线性表,栈中的数据元素以及数据元素之间的逻辑关系和线性表相同,两者之间的差别在于:线性表的插入和删除操作可以在表的任意位置进行,而栈的插入和删除操作只允许在表的尾端 ...
- k:特殊的线性表—队列
队列的概念: 队列是另一种特殊的线性表,它的特殊性体现在其只允许在线性表的一端插入数据元素,在线性表的另一端删除数据元素(一般会采用在线性表的表尾那端(没被head指针所指的那端)插入数据元素,在线 ...
- 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。
//归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...
- 动态分配的顺序线性表的十五种操作—C语言实现
线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...
- Java Se :线性表
Java的集合框架分为两个系列,Collection和Map系列.在大学期间,学习数据结构时,好像学习了线性表.非线性表.树,哎,都给忘了.其实,在Collection系列内部又可以分为线性表.集合两 ...
随机推荐
- AngularJS 拦截器实现全局$http请求loading效果
日常项目开发中,当前端需要和后端进行数据交互时,为了友好的UI效果,一般都会在前端加个loading的状态提示(包括进度条或者icon显示),数据传输或交互完成之后,再隐藏/删除loading提示. ...
- linux 查看cpu个数,内存情况,系统版本
查看cpu个数 总核数 = 物理CPU个数 * 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 查看物理CPU个数 cat /proc/cpuinfo ...
- SEO是件贼有意思的事情 golang入坑系列
这两天迷上了SEO.真心看不起百度的竞价排名,但作为一个商业网站,赚钱是一件无可厚非的事情.只做活雷锋,没有大金主是做不长的.做完功课后,发现百度和google的SEO策略又不相同,几乎是无法通用.百 ...
- CCF-201604-3-路径解析
问题描述 试题编号: 201604-3 试题名称: 路径解析 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在操作系统中,数据通常以文件的形式存储在文件系统中.文件系统一般采 ...
- php面试之四-Linux部分
php面试题之四——Linux部分(高级部分) 四.Linux部分 1.请解释下列10个shell命令的用途(新浪网技术部) top.ps.mv.find.df.cat.chmod.chgrp.gre ...
- Git基本使用命令(windows)
1. 记住一个名词repository版本库 =======================基本操作======================== git init 在需要的地方建立一个版本库(也 ...
- H5混合开发二维码扫描以及调用本地摄像头
今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底 ...
- Apache OFBiz源码解读之MVC模型
节点解析 request-map 你可以将其理解为controller的配置,如果你了解或使用过struts的配置或springmvc的annotation,就会发现这个定义跟它们是很相似的: [ht ...
- 【本地资源路径&&网络资源路径&&正反斜杠在Java中的用法】
一.概念和用法 左正右反 先来看看转义字符的概念:通过 \ ,?来转变后面字母或符号的含义.意思就是改变字母本身的含义. 以"\"符号为例,JAVA中有很多操作,例如文件操作等,需 ...
- Java---String总结
JAVA中的String类,不管是日常开发,或者是面试,都是常用的类之一,所以写在这里也为为了总结,方便以后的查阅与复习. 特点: 1.Java中所有的类中,String是使用最多的一个类 2.是 ...