您的位置:

java线性表,java线性表和链表的区别

本文目录一览:

JAVA数据结构有哪几种?

数组、栈 、队列、链表、树、堆 、图、散列表 。

1:数组是计算机编程语言上,对于“Array”的中文称呼,是用于储存多个相同类型数据的集合。

2:栈是限定仅在表尾进行插入和删除操作的线性表,栈者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。

3:一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

4:链表,一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

5:哈希表,是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

用JAVA实现线性表排序

package Test;

import java.util.Random;

import java.io.*;

import java.util.Date;

import java.text.SimpleDateFormat;

import java.util.Calendar;

public class Baidu {

/**

* 生成随机数组

* @param n int

* @return int[]

*/

public int[] creatarray(int n) {

Random random = new Random();

int array[] = new int[n];

for (int i = 0; i array.length; i++) {

array[i] = random.nextInt();

}

return array;

}

/**

* 排序函数

* @param data int[]

* @param n 参数长度

* @param cNo 比较的值 是0

*/

public int[] merge(int[] data, int n, int cNo) {

int length1 = 0;

int length2 = 0;

int length0 = 0;

int array1[] = new int[n]; //正数

int array2[] = new int[n]; //负数

int array0[] = new int[n]; //零

int redata[] = new int[n]; //返回数组

for (int i = 0; i n; i++) {

if (data[i] 0) {

array1[length1] = data[i];

length1++;

} else if (data[i] == 0) {

array0[length0] = data[i];

length0++;

} else {

array2[length2] = data[i];

length2++;

}

}

for (int i = 0; i length1; i++) {

redata[i] = array1[i];

}

for (int i = 0; i length0; i++) {

redata[length1 + i] = array0[i];

}

for (int i = 0; i length2; i++) {

redata[length1 + length0 + i] = array2[i];

}

return redata;

}

/**

* 输出函数

* @param time int[]

* @param before int[]

* @param end int[]

* @param n int

*/

public void out(long[] time, int[] before, int[] end, int n) {

for (int v = 0; v n; v++) {

System.out.println("第" + v + "组耗时:" + time[v] + " 原来是:" + before[v] +

" 排序后为:" + end[v]);

}

}

public static void main(String args[]) {

Baidu tt = new Baidu();

int[] array = new int[20];

int[] arrayEnd = new int[20];

array = tt.creatarray(20);

int forNum = 3; //循环次数

long[] timeall = new long[forNum];

for (int i = 0; i forNum; i++) {

Calendar cCalendar = Calendar.getInstance();

long currTimebegin = cCalendar.getTimeInMillis();

arrayEnd = tt.merge(array, 20, 0);

cCalendar = Calendar.getInstance();

long currTimeend = cCalendar.getTimeInMillis();

long time = currTimeend - currTimebegin;

timeall[i] = time;

}

tt.out(timeall, array, arrayEnd, forNum);

}

}

大体思路吧 稍微在此基础上修改一下即可

Java设计线性表排序算法

import java.util.Scanner;

import java.util.Arrays;

public class P

{

public static void main(String[] args)

{

Scanner sc=new Scanner(System.in);

float[] A=new float[1],B=new float[1];

int alen=0,blen=0,i,j,k;

String line;

System.out.println("请输入线性表A的各元素,每行一个(输入#结束):");

while(true)

{

line=sc.nextLine();

if(line.equals("#"))

break;

A=Arrays.copyOf(A,++alen);

A[alen-1]=Float.parseFloat(line);

}

System.out.println("请输入线性表B的各元素,每行一个(输入#结束):");

while(true)

{

line=sc.nextLine();

if(line.equals("#"))

break;

B=Arrays.copyOf(B,++blen);

B[blen-1]=Float.parseFloat(line);

}

Arrays.sort(A);

Arrays.sort(B);

System.out.println("升序排序后,线性表A的各元素是:");

for(i=0;ialen;i++)

{

System.out.print(A[i]+" ");

}

System.out.println();

System.out.println();

System.out.println("升序排序后,线性表B的各元素是:");

for(i=0;iblen;i++)

{

System.out.print(B[i]+" ");

}

System.out.println();

System.out.println();

A=Arrays.copyOf(A,alen+blen);

for(i=0;iblen;i++)

{

if(B[i]=A[alen-1])

A[alen++]=B[i];

else

{

for(j=0;jalen-1;j++)

{

if(B[i]=A[j])

break;

}

for(k=alen-1;k=j;k--)

{

A[k+1]=A[k];

}

A[j]=B[i];

alen++;

}

}

System.out.println("线性表B按顺序插入线性表A中后,线性表A的各元素是:");

for(i=0;ialen;i++)

{

System.out.print(A[i]+" ");

}

sc.close();

}

}

今天老师讲java的数据结构,讲到数组长度和线性表的长度,请问线性表长度和数组长度的关系是什么?

数组的长度表示存放线性表的存储空间的长度,一般是分配之后固定的!(当然可以通过一些高级语言的编程手段变成动态的)

线性表的长度可以理解为数组中存放的数据的长度!是线性表中存放数据元素的个数,这个值是可以变化的 随着线性表的增,删操作 量会变化

但是线性表的长度不能超过数组的长度!也就是小于等于!

请用java写假设有两个集合A和B分别用两个线性表LA和LB表示,即线性表中的数据元素为集合中的成

/*假设利用两个线性表La和Lb分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的

集合A=AUB。这就要求对线性表作如下操作:扩大线性表La,将存在于线性表Lb中而不存在于线性表La中的数据元素插入

到线性表La中去,只要从线性表Lb中依次取得每个数据元素,并依值在线性表La中进行查访,若不存在,则插入之。*/

#includeiostream.h

#includestdio.h

#includestdlib.h

#includemalloc.h

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define LIST_INIT_SIZE 100//线性表存储空间的初始分量

#define LISTINCREAMENT 10//线性表存储空间的分配增量

typedef int Status;

typedef int ElemType;