java 链式结构_链式存储结构的Java实现

这是一个关于链式存储结构实现的Java类,包括在链尾和指定位置插入元素、删除指定位置元素、读取指定位置元素、获取链长度以及遍历打印链中所有元素的方法。类内部定义了一个LinkedListElement结构体用于存储元素值和指向下一个元素的引用。
摘要由CSDN通过智能技术生成

1 packagecom.berry.algorithm.linkedlist;2

3 /**

4 * 链式存储结构的实现5 */

6 public classLinkedListArray {7

8 private LinkedListElement element = null;9

10 /**

11 *12 *@paramvalue13 * 在链的末端插入一个元素14 */

15 public synchronized void create(intvalue){16

17 if(this.element == null){18 this.element = newLinkedListElement(value);19 }else{20 LinkedListElement temp = this.element;21 LinkedListElement last = null;22 do{23 last =temp;24 temp =temp.next;25 }while(temp != null);26

27 last.next = newLinkedListElement(value);28 }29 }30

31 /**

32 *33 *@paramvalue34 *@paramindex35 * 在链的指定位置插入一个元素36 */

37 public synchronized void create(int value, intindex){38

39 if(this.element == null || index < 0){40 return;41 }42

43 if(index == 0){44 LinkedListElement newElement = newLinkedListElement(value);45 newElement.next = this.element;46 this.element =newElement;47 return;48 }49

50 LinkedListElement temp = this.element.next;51 LinkedListElement last = this.element;52 int i = 1;53

54 if(temp == null){55 this.element.next = newLinkedListElement(value);56 return;57 }58

59 while(temp != null){60

61 if(i ==index){62 LinkedListElement newElement = newLinkedListElement(value);63 newElement.next =temp;64 last.next =newElement;65 return;66 }else{67 last =temp;68 temp =temp.next;69 i++;70 }71 }72

73 if(index >=i){74 last.next = newLinkedListElement(value);75 }76 }77

78 /**

79 *80 *@paramvalue81 * 在链的末端插入n个元素,元素通过数组的方式传参82 */

83 public synchronized void create(int[] value){84

85 if(value == null || value.length == 0){86 return;87 }88

89 if(this.element == null){90

91 this.element = new LinkedListElement(value[0]);92 LinkedListElement temp = this.element;93 for(int i = 1;i < value.length;i++){94 temp.next = newLinkedListElement(value[i]);95 temp =temp.next;96 }97 }else{98 LinkedListElement temp = this.element;99 LinkedListElement last = null;100 do{101 last =temp;102 temp =temp.next;103 }while(temp != null);104

105 last.next = new LinkedListElement(value[0]);106 temp =last.next;107 for(int i = 1;i < value.length;i++){108 temp.next = newLinkedListElement(value[i]);109 temp =temp.next;110 }111 }112 }113

114 /**

115 *116 *@paramvalue117 *@paramindex118 * 在链的指定位置插入n个元素,元素通过数组的方式传参119 */

120 public synchronized void create(int[] value, intindex){121

122 if(this.element == null || index < 0){123 return;124 }125

126 if(index == 0){127 LinkedListElement newElement = new LinkedListElement(value[0]);128 LinkedListElement temp =newElement;129 for(int i = 1;i < value.length;i++){130 temp.next = newLinkedListElement(value[i]);131 temp =temp.next;132 }133

134 temp.next = this.element;135 this.element =newElement;136 return;137 }138

139 LinkedListElement temp = this.element.next;140 LinkedListElement last = this.element;141 int i = 1;142

143 if(temp == null){144 this.element.next = new LinkedListElement(value[0]);145 temp = this.element.next;146 for(int k = 1;k < value.length;k++){147 temp.next = newLinkedListElement(value[k]);148 temp =temp.next;149 }150 return;151 }152

153 while(temp != null){154

155 if(i ==index){156 LinkedListElement newElement = new LinkedListElement(value[0]);157 last.next =newElement;158

159 LinkedListElement temp2 =newElement;160 for(int k = 1;k < value.length;k++){161 temp2.next = newLinkedListElement(value[k]);162 temp2 =temp2.next;163 }164 temp2.next =temp;165 return;166 }else{167 last =temp;168 temp =temp.next;169 i++;170 }171 }172

173 if(index >=i){174 last.next = new LinkedListElement(value[0]);175 temp =last.next;176 for(int j = 1;j < value.length;j++){177 temp.next = newLinkedListElement(value[j]);178 temp =temp.next;179 }180 }181 }182

183 /**

184 *185 *@paramindex186 * 删除指定位置的元素187 */

188 public synchronized void delete(intindex){189

190 if(this.element == null || index < 0){191 return;192 }193

194 if(index == 0){195 if(this.element.next != null){196 this.element = this.element.next;197 return;198 }else{199 this.element = null;200 return;201 }202 }else{203 LinkedListElement temp = this.element.next;204 LinkedListElement tempBefore1 = this.element;205 int i = 1;206

207 while(temp != null){208

209 if(i ==index){210 if(temp.next == null){211 tempBefore1.next = null;212 break;213 }else{214 tempBefore1.next =temp.next;215 break;216 }217 }else{218 tempBefore1 =temp;219 temp =temp.next;220 i++;221 }222 }223 }224 }225

226 /**

227 *228 *@paramindex229 * 读取指定位置的元素230 */

231 public synchronized Integer read(intindex){232

233 if(this.element == null || index < 0){234 return null;235 }236

237 if(index == 0){238 return this.element.value;239 }240

241 LinkedListElement temp = this.element.next;242 int i = 1;243

244 while(temp != null){245 if(i ==index){246 returntemp.value;247 }else{248 temp =temp.next;249 i++;250 }251 }252

253 return null;254 }255

256 /**

257 *258 * 获取链的长度259 */

260 public synchronized intlength(){261

262 if(this.element == null){263 return 0;264 }else{265 int i = 1;266 LinkedListElement temp = this.element.next;267 while(temp != null){268 temp =temp.next;269 i++;270 }271 returni;272 }273 }274

275 /**

276 *277 * 遍历并打印链的所有元素278 */

279 public voidshow(){280 if(this.element == null){281 System.out.println("Array hasn't element");282 }else{283 LinkedListElement temp = this.element;284 int i = 0;285 while(temp != null){286 System.out.println("element " + i + ": " +temp.value);287 temp =temp.next;288 i++;289 }290 }291 }292

293 /**

294 *295 * 链的元素类(结构体)296 */

297 private classLinkedListElement {298

299 public LinkedListElement next = null;300

301 public intvalue;302

303 public LinkedListElement(intvalue){304 this.value =value;305 }306 }307 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值