链表排序java实现,java链表详解

  链表排序java实现,java链表详解

  00-1010线性表顺序表链表汇总

  00-1010线性表是具有相同特征的n个数据元素的有限序列。线性表是实践中广泛使用的一种数据结构。常见的线性表:序列表、链表、堆栈、队列、字符串.线性表在逻辑上是线性结构,也就是说,是一条连续的直线。但在物理结构(内存)上不一定是连续的。线性表物理存储时,通常以数组(物理连续)和链结构(物理不连续)的形式存储。

  00-1010序列表是一种线性结构,其中数据元素由一段具有连续物理地址的存储单元顺序存储。一般采用数组存储。完成阵列上的数据添加、删除和更正。(可以说顺序表相当于一个数组)

  那么问题来了,为什么不直接使用数组,而是把数组放在类中,然后对数组进行操作呢?因为数组不是面向对象的,所以把数组放到类里,就可以通过对象来操作了。

  听着,这个概念有点模糊。接下来,我们通过模拟序列表的接口实现来了解序列表:

  用ArrayList模拟Arraylist的接口实现;

  数组列表:

  public class Arraylist { public int[]arr;public int useSize//数组的有效个数public ArrayList(){ this . arr=new int[10];//假设数组长度为10} //打印顺序表public void display(){ for(int I=0;i this.useSizeI){ system . out . print(this . arr[I] );} system . out . println();} public boolean is full(){ return this . arr . length==this . usesize;}//添加一个元素public void add (int pos,int date){ if(pos 0 pos use size){ system . out . println( pos位置非法 );返回;} if(is full()){ this . arr=arrays . copy of(this . arr,2 * this . arr . length);} for(int I=this . use size-1;i=posI-){ this . arr[I 1]=this . arr[I];} this . arr[pos]=date;this.useSize}//判断一个元素public boolean是否包含(int to find){ for(int I=0;i this.useSizeI){ if(arr[I]==toFind){ return true;} }返回false}//查找某个元素对应的位置public int search(int to Find){ for(int I=0;i this.useSizeI){ if(arr[I]==to find){ return I;} } return-1;}//Get元素public int Get pos(int pos){ if(pos 0 pos=use size){ system . out . println(非法pos location );return-1;//如果序列表中有元素-1怎么办?后面说} if(isempty()){ system . out . print(序列表为空);return-1;} for(int I=0;i this.useSizeI){ if(I==pos){ return this . arr[I];

   } } return -1; } public boolean isEmpty(){ return this.useSize==0; } // 给 pos 位置的元素设为 value public void setPos(int pos, int value) { if (pos < 0 pos >=useSize){ System.out.print("pos位置不合法"+" "); return; } if(isEmpty()){ System.out.println("顺序表为空"); return; } this.arr[pos] = value; } //删除第一次出现的关键字key public void remove(int toRemove){ if(isEmpty()) {//判断顺序表是否为空 System.out.println("顺序表为空"); } int x=search(toRemove); if(x==-1){ System.out.println("没有你要删除的数字"); return; } for (int j = x; j<=this.useSize-1; j++) { this.arr[j]=this.arr[j+1]; } this.useSize--; } //清空顺序表 public void clear() { this.usedSize = 0; }}在pos位置新增元素:

  

 

  

 

  判断是否包含某个元素:

  

 

  查找pos位置:

  

 

  在pos位置上给值value

  

 

  删除第一次出现的关键字key

  

 

  

 

  

链表

链表是一种 物理存储结构(内存)上非连续 存储结构,数据元素的 逻辑顺序 是通过链表中的 引用链接 次序实现的 。 实际中链表的结构非常多样,以下情况组合起来就有 8 种链表结构:

 

  单向、双向

  带头、不带头

  循环、非循环

  

 

  接下来主要讲两种:单向不带头非循环、双向不带头非循环

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: