以下涉及到的算法,都是关于线性表的顺序表示和实现这部分的算法题目
1 package com.linearList; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 import java.util.LinkedList; 6 import java.util.List; 7 8 /** 9 * @author MJC 10 *2018年2月13日 11 * 上午11:05:42 12 */ 13 public class LinearListTest { 14 15 public static void main(String[] args) { 16 LinearListTest llt = new LinearListTest(); 17 18 int[] arrayA = {1, 3, 5,8,9,12,13,15}; 19 int[] arrayB = {2, 4, 6,7,10,11,15,16}; 20 int[] arrayC = new int[16]; 21 int[] result = new int[16]; 22 23 ListlinkList = new LinkedList (); 24 linkList.add(1); 25 26 //定位元素的位置 27 System.out.println(llt.locateElem(arrayA,8)); 28 //删除第i个元素 29 result=llt.listDelete(arrayB,3); 30 for (int i = 0; i < result.length; i++) { 31 System.out.print(result[i]+","); 32 } 33 System.out.println("======================="); 34 //在第i元素之前 插入一个元素insertElem, 35 result = llt.listInsert(arrayA,4,6); 36 37 for (int i = 0; i < result.length; i++) { 38 System.out.print(result[i]+","); 39 } 40 System.out.println(); 41 System.out.println("====分割线===="); 42 43 //非递减有序线性表,合并成一个非递减有序线性表 44 arrayC = llt.Mergelist(arrayA,arrayB,arrayC); 45 for (int i = 0; i < arrayC.length; i++) { 46 System.out.print(arrayC[i]+","); 47 48 } 49 System.out.println(); 50 System.out.println("========================"); 51 List La = new ArrayList (); 52 List Lb = new ArrayList (); 53 La.add(1); 54 La.add(2); 55 La.add(3); 56 57 Lb.add(2); 58 Lb.add(5); 59 Lb.add(6); 60 Lb.add(6); 61 //存在于Lb但是不存在于La中的数,存入到La 62 System.out.println(llt.union(La,Lb)); 63 64 } 65 /** 算法 2.6 66 * 定位元素的位置 67 * @param array 68 * @param elem 69 * @return 70 */ 71 public int locateElem(int[] array,int elem){ 72 for (int i = 0; i < array.length; i++) { 73 if(array[i] == elem){ 74 return i+1; 75 } 76 } 77 return -1; 78 } 79 /** 算法 2.5 80 * 删除第i个元素 81 * @param array 82 * @param i 83 * @return 84 */ 85 public int[] listDelete(int[] array,int i){ 86 int[] tempArr = new int[16]; 87 for (int j = 0; j < array.length; j++) { 88 if(j i-1){ 91 tempArr[j-1] = array[j]; 92 } 93 } 94 95 return tempArr; 96 } 97 /** 算法 2.4 98 * 在第i元素之前 插入一个元素insertElem, 99 * @param arr100 * @param i101 * @param insertElem102 * @return103 */104 public int[] listInsert(int[] arr,int i,int insertElem){105 int lenth=arr.length;106 if(i<1||i>=lenth){107 try {108 throw new Exception("位置不合法");109 } catch (Exception e) {110 e.printStackTrace();111 }112 }113 //临时数组,最终数组114 int[] temp = new int[17];115 for (int j = 0; j < i-1; j++) {116 temp[j]=arr[j];117 }118 for (int j = i-1; j < temp.length; j++) {119 if(j < lenth){120 temp[j]=arr[j];121 }122 }123 for (int j = arr.length; j >= i-1; j--) {124 temp[j+1] = temp[j];125 }126 temp[i-1] = insertElem;127 return temp;128 }129 /** 算法 2.2130 * 非递减有序线性表,合并成一个非递减有序线性表131 * @param arrayA132 * @param arrayB133 * @param arrayC134 * @return135 */136 public int[] Mergelist(int[] arrayA,int[] arrayB,int[] arrayC){137 138 int LaLenth = arrayA.length;139 int LbLenth = arrayB.length;140 int i = 0, j = 0, k = 0;141 while(i < LaLenth && j union(List La,List Lb){172 for (Iterator iterator = Lb.iterator(); iterator.hasNext();) {173 Integer item = (Integer) iterator.next();174 if(item!=null){175 if(!La.contains(item)){176 La.add(item);177 }178 }179 }180 return La;181 }182 }