线性表

线性表是最基本、最简单、也是最常用的一种数据结构。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了哨位结点)。

我们说“线性”和“非线性”,只在逻辑层次上讨论,而不考虑存储层次,所以双向链表和循环链表依旧是线性表。 在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。一般线性表也就是我们通常所说的“线性表”,可以自由的删除或添加结点。受限线性表主要包括栈和队列,受限表示对结点的操作受限制。

线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。(以上定义参考百度,懒得解释#-_-)

线性表模型

package cn.deu;public class MyArray {long [] arr;int num;public MyArray() {arr=new long[50];}public MyArray(int n){arr=new long[n];}//插入public void insert(int n){//无序插入法/*arr[num++]=n;*///冒泡法/*long t=0;arr[num++]=n;for (int i = 0; i < num; i++) {for (int j = i+1; j < num; j++) {if(arr[i]>arr[j]){t=arr[i];arr[i]=arr[j];arr[j]=t;}}}*/int i;for (i = 0; i < num; i++) {if(arr[i]>n)break;}for (int j = num; j > i; j--) {arr[j]=arr[j-1]; }arr[i]=n;num++;}//查找public int find(int n){//线性查找
//      for (int i = 0; i < num; i++) {
//          if(arr[i]==n)
//              return i;
//      }
//      return -1;int lower=0;int upper=num;int mid=0;//二分查找while(true){mid=(lower+upper)/2;if(arr[mid]==n)return mid;elseif(lower>upper)return -1;else{  if(arr[mid]>n)upper=mid-1;elselower=mid+1;}}}//显示public void show(){for (int i = 0; i < num; i++) {System.out.print(arr[i]+" ");}System.out.println();}//删除public void delete(int n){if(find(n)==-1)System.out.println("没有发现数据,删除失败!");else{for (int i = find(n); i < num; i++) {arr[i]=arr[i+1];}num--;}}//修改public void change(int n,int m){if(find(n)==-1)System.out.println("没有发现数据,修改失败!");else{arr[find(n)]=m;}}}

线性表测试

package en.edu.Test;import cn.deu.MyArray;public class Test {public static void main(String[] args) {MyArray list=new MyArray();//插入测试list.insert(12);list.insert(2134);list.insert(132);list.insert(67);list.insert(9);list.insert(12345);list.insert(90);//查找测试System.out.println(list.find(132));System.out.println(list.find(110));//显示测试list.show();//删除测试list.delete(12345);list.show();list.delete(15);list.show();//修改测试list.change(9, 45);list.show();list.change(14, 20);list.show();}}

结果:
4
-1
9 12 67 90 132 2134 12345 
9 12 67 90 132 2134 
没有发现数据,删除失败!
9 12 67 90 132 2134 
45 12 67 90 132 2134 
没有发现数据,修改失败!
45 12 67 90 132 2134

转载请注明出处:http://blog.csdn.net/acmman/article/details/50520267

【Java数据结构】线性表相关推荐

  1. JAVA数据结构 线性表的链式存储及其实现

    2019独角兽企业重金招聘Python工程师标准>>> 2线性表的链式存储及其实现 虽然顺序表具有随机存取的特点是一种有用的存储结构但是也有缺陷: (1)      若需要给顺序表增 ...

  2. 数据结构——线性表(三)

    数据结构--线性表(三) 作者:黑衣侠客 一.线性表的定义 线性表,从名字来看,可以发现,是具有像线一样性质的表 线性表:零个或多个数据元素的有限序列. 首先,它是一个序列,也就是说,元素之间是有顺序 ...

  3. 数据结构-线性表之用队列实现栈用栈实现队列

    文章目录 **********用队列实现栈 一:思路 二:实现 (1)结构体定义 (2)初始化和销毁 (3)进"栈" (4)出"栈" 三:代码 ******** ...

  4. 数据结构-线性表之带头结点的双向循环链表

    文章目录 前言 实现 (1)结构定义 (2)基本函数 (3)操作实现 测试 代码 前言 链表的类型有很多种(根据带头或不带头,循环或非循环等等),但是我们重点研究的只有两种,一种结构非常简单是无头单向 ...

  5. 数据结构摧毁线性表用c语言,[简述]数据结构-线性表(c语言实现)

    [简述]数据结构-线性表(c语言实现)second60 20180422 1. 线性表的定义 线性表是具有相同特性的数据元素的一个有限序列. 2. 线性表抽象数据类型描述 ADT  List { 数据 ...

  6. 王道数据结构线性表:有读者认为直接去掉p结点会造成断链?

    王道数据结构线性表:有读者认为直接去掉p结点会造成断链? 我用图解的方式来说明一下,文字有点多,看起来比较眼疼,但是内容不多,希望能对你有帮助. 书上的代码 解释 (ps:对上面解释的一点补充↓)

  7. 数据结构-线性表(严书代码实现)

    数据结构-线性表的顺序表示代码 //头文件内容实现 #ifndef SEQLIST_H_INCLUDED #define SEQLIST_H_INCLUDED #include<string.h ...

  8. 数据结构-线性表-思维导图+小结

    数据结构-线性表思维导图+小结 1 数据结构-第二章-线性表-思维导图 2 数据结构-第二章-线性表-习题小结 2.1 概念性习题小结 2.2 操作性习题小结 1 数据结构-第二章-线性表-思维导图 ...

  9. 数据结构线性表基本操作

    数据结构线性表基本操作 基本内容 线性表的顺序表示和实现 线性表的顺序存储表示 顺序表中基本操作的实现 1.顺序表的初始化 2.取值 3.查找 4.插入 5.删除 线性表的链式表示和实现 单链表的定义 ...

  10. c语言构造一个空线性表l,数据结构线性表顺序结构的定义与实现C语言-Go语言中文社区...

    大家好,今天给大家总结了一下数据结构里面的线性表的顺序结构,顺序表表示的是用一组地址连续的存储单元依次存储线性表的数据元素,所以顺序结构的实现一般采用数组的方式来实现,存储空间也采用动态分配的方式.在 ...

最新文章

  1. 【linux】Valgrind工具集详解(九):Memcheck检查的内容和方法
  2. KMP算法的理解,伪代码,c代码实现
  3. python免费入门教程-python入门免费教程看这些就够了
  4. iterm2 mac链接linux工具 桌面程序Transmit
  5. SharePoint Portal Server 2003 SP2对文档库事件处理程序所带来的影响
  6. 1000种对Java的响应没有死
  7. stl取出字符串中的字符_在C ++ STL中使用比较运算符比较两个字符串
  8. Windows下C++多线程同步与互斥简单运用-转
  9. Graph Theory
  10. java 获取字符串_详解Java String字符串获取每一个字符及常用方法
  11. 【Database】人脸数据库介绍及下载链接
  12. 我的世界服务器物品管理,JEI物品管理器 _ 我的世界Minecraft中国版官方网站——你想玩的,这里都有...
  13. uni-app 地图 可点击 可搜索全国
  14. Lvs之NAT、DR、TUN三种模式的应用配置案例
  15. C网跟G网是什么意思?
  16. Python for Data Analysis v2 | Notes_ Chapter_5 pandas 入门
  17. linux 监控丢包 脚本,linux下监控网络流量的脚本
  18. linux段错误core dumped,Linux下Segmentation fault(core dumped)简单调试方法
  19. AMC数学考试能用计算机吗,重大调整!今年美国数学竞赛AMC考试时间有变化!
  20. jellyfin自定义css主题

热门文章

  1. 无名飞控c语言源码,stm32飞控
  2. 安卓程序添加指纹解锁功能
  3. abap判断当前月最后一个工作日_油价正式打响第一枪!今天12月3日,今晚油价迎来大幅暴跌,调价后全国地区油价一览!...
  4. TypeScript的安装步骤、运行问题及代码的简单运行
  5. matlab plot title 包含变量的图片标题
  6. Linux json格式化输出
  7. c语言定义函数insert,c语言编写函数insert(char s1[ ],char s2[ ],int pos),实现在字符串s1中的指定位置pos处插入字符串s2。...
  8. python求二维数组各行最大值_python+numpy按行求一个二维数组的最大值方法
  9. 服务器监控系统的介绍,客户服务系统服务器监控系统
  10. 使用Spring框架开发会遇到的所有异常及解决方案(持续更)