數據結構(java版)學習筆記(二)——線性表之順序表

 2023-12-25 阅读 26 评论 0

摘要:順序表的優點: 隨機存取元素方便,根據定位公式容易確定表中每個元素的存儲位置,所以要指定第i個結點很方便簡單,直觀順序表的缺點: 插入和刪除結點困難擴展不靈活,難以確定分配的空間容易造成浪費順序表的實現: 這里我簡單說

順序表的優點:

  1. 隨機存取元素方便,根據定位公式容易確定表中每個元素的存儲位置,所以要指定第i個結點很方便
  2. 簡單,直觀

順序表的缺點:

  1. 插入和刪除結點困難
  2. 擴展不靈活,難以確定分配的空間
  3. 容易造成浪費

順序表的實現:

這里我簡單說一下吧,Sqlist類實現了ListIntf接口,也就是我們上一節中所提到的接口,之后eclipse中就會提示我們復寫ListIntf中的方法,我們根據順序表的特點,逐一復寫即可

詳情看注釋吧~

PS:所有的參數i都是序號,從1開始

import java.util.Scanner;public class SqList implements ListIntf{final int maxlen = 1000; //線性表中可容納最多數據元素數目String v[] = new String[maxlen];int len =0;//len是長度,1開始,是位序號/*** * @return 返回線性表中可容納最多數據元素數目*/int getmaxlen(){return maxlen;}public SqList(){//構造方法中實現相關的接收數據操作Scanner sc = new Scanner(System.in);int n;String[] a = new String[maxlen];System.out.println("請輸入需要的數據個數:");n=sc.nextInt();sc.close();for(int i=0;i<n;i++){a[i] = "a"+i;//a[0]的數值是 a0,a[1]的數值是a1,以此類推……
            }setData(a);}/*** 將String數組a賦值給String數組v* @param String數組*/public void setData(String[] a){v = a;}@Overridepublic int size() {return len;}@Overridepublic void clear() {v = new String[maxlen];}@Overridepublic boolean isEmpty() {return len==0;}@Overridepublic String get(int i) {return v[i-1];}@Overridepublic int indexOf(String s) {int i;for(i=0;i<len;i++){if(v[i].equals(s)){return i+1;}}System.out.println("順序表中不存在該元素!!");return 0;}@Overridepublic String getPre(String s) {//當前是順序表,是順序存儲結構,無需實現此方法return null;}@Overridepublic String getNext(String s) {//當前是順序表,是順序存儲結構,無需實現此方法return null;}@Overridepublic void insertElementAt(String s, int i) {//首先判斷順序表是否已滿,其次判斷i是否合法,之后再進行插入操作if(len==maxlen){System.out.println("順序表已滿!");return;//結束判斷,跳出判斷語句}else{if(i<1||i>len){System.out.println("輸入的序號不合法!");return;}else{for(int j=len-1;j>=i-1;j--){v[j+1]=v[j];}v[i-1] =s;  len++;return;}}}@Overridepublic String remove(int i) {
String string;
if(i<1||i>len){System.out.println("輸入序號不合法!");return null;}else{string = v[i-1];for(int j=i-1;j<len;j++){v[j-1] = v[j];}len--;return string;}}@Overridepublic String remove(String s) {// TODO Auto-generated method stub String string;for(int i=0;i<len;i++){if(v[i].equals(s)){string = v[i];remove(i+1);//這里的i是索引(下標),索引(下標)加1成為序號return string;}}System.err.println("當前順序表中沒有該元素");return null;}}

?

轉載于:https://www.cnblogs.com/kexing/p/9387708.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/194945.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息