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;

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/155382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-17 02:41
下一篇 2024-11-17 02:41

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Python中new和init的区别

    new和init都是Python中常用的魔法方法,它们分别负责对象的创建和初始化,本文将从多个角度详细阐述它们的区别。 一、创建对象 new方法是用来创建一个对象的,它是一个类级别…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • 利用Python实现两个链表合并为一个有序链表

    对于开发工程师来说,实现两个链表合并为一个有序链表是必须掌握的技能之一。Python语言在链表处理上非常便利,本文将从多个方面详细阐述如何利用Python实现两个链表合并为一个有序…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论