




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Java實現順序表的操作詳解目錄一、順序表是什么二、自定義異常空引用異常下標越界異常三、順序表的方法順序表的實現獲取順序表長度順序表是否為空順序表是否為滿打印順序表末尾新增元素指定位置新增元素判斷是否包含某元素查找某個元素對應的位置獲取pos位置的元素給pos位置的元素賦值刪除第一次出現的關鍵字key清空順序表四、自定義順序表
一、順序表是什么
順序表是用一段物理地址連續的存儲單元依次存儲數據元素的線性結構,一般情況下采用數組存儲。在數組上完成數據的增刪查改。
數組不就是一個現場的順序表嗎?但是數組并沒有直接向我們提供增刪查改的工具,所以我們必須重新實現一下順序表。
二、自定義異常
空引用異常
如果我們的順序表為空時,手動拋出空引用異常
publicclassNullExceptionextendsRuntimeException{
publicNullException(Stringmessage){
super(message);
下標越界異常
當我們進行增刪查改時,下標越界時,我們手動拋出一個下標越界異常
publicclassIndexExceptionextendsRuntimeException{
publicIndexException(Stringmessage){
super(message);
三、順序表的方法
順序表的實現
這里我們定義一個順序表,默認容量為DEFAULTSIZE,實際大小為usedsize.
publicclassArrList{
publicint[]arr;
publicintusedSize;
publicstaticfinalintDEFAULTSIZE=10;
publicArrList(){
this.arr=newint[DEFAULTSIZE];
獲取順序表長度
usedSize存儲的就是當前順序表的長度,直接返回即可。
publicintsize(){
returnthis.usedSize;
順序表是否為空
此方法我們只想在順序表內部使用,所以我們定義為private.
privatebooleanisEmpty(){
returnthis.arr==null;
順序表是否為滿
此方法我們只想在順序表內部使用,所以我們定義為private.
privatebooleanisFull(){
//如果數組所放元素大于等于數組長度,那么數組滿了
returnthis.size()=this.arr.length;
打印順序表
publicvoiddisplay(){
for(inti=0;ithis.usedSize;i++){
System.out.print(arr[i]+"");
System.out.println();
末尾新增元素
publicvoidadd(intdata)throwsNullException{
//1.數組為空,報空異常
if(isEmpty()){
thrownewNullException("數組為空");
//2.數組滿了,先增容
if(isFull()){
this.arr=newint[2*this.arr.length];
//3.進行新增
this.arr[this.usedSize]=data;
//4.元素+1
this.usedSize++;
指定位置新增元素
publicvoidadd(intpos,intdata)throwsRuntimeException,IndexException{
//1.判斷數組是否為空
if(isEmpty()){
thrownewNullException("數組為空");
//2.判斷新增位置是否合法,拋數組越界異常
if(pos0||posthis.arr.length){
thrownewIndexException("數組越界");
//3.判斷數組是否已滿,進行擴容
if(isFull()){
this.arr=newint[2*this.arr.length];
//4.進行新增
for(inti=this.usedSize-1;i=pos;i--){
this.arr[i+1]=this.arr[i];
this.arr[pos]=data;
this.usedSize++;
}
判斷是否包含某元素
publicbooleancontains(inttoFind){
for(inti=0;ithis.usedSize;i++){
if(toFind==this.arr[i]){
returntrue;
returnfalse;
查找某個元素對應的位置
publicintindexOf(inttoFind){
for(inti=0;ithis.usedSize;i++){
if(toFind==this.arr[i]){
returni;
return-1;
獲取pos位置的元素
publicintget(intpos)throwsIndexException{
//判斷pos位置是否合法
if(pos0||pos=this.usedSize){
thrownewIndexException("輸入pos位置數組越界");
}else{
returnthis.arr[pos];
給pos位置的元素賦值
publicvoidset(intpos,intvalue)throwsNullException,IndexException{
if(isEmpty()){
thrownewNullException("數組為空");
//2.判斷新增位置是否合法,拋數組越界異常
if(pos0||pos=this.arr.length){
thrownewIndexException("數組越界");
this.arr[pos]=value;
刪除第一次出現的關鍵字key
publicvoidremove(inttoRemove)throwsNullException{
if(isEmpty()){
thrownewNullException("數組為空");
intret=indexOf(toRemove);
if(ret==-1){
System.out.println("不存在此數");
return;
if(ret!=-1){
for(inti=ret;ithis.usedSize-1;i++){
this.arr[i]=this.arr[i+1];
this.usedSize++;
}
清空順序表
publicvoidclear(){
this.usedSize=0;
//如果為引用類型
//for(inti=0;isize();i++){
//this.arr[i]=null;
//this.usedSize=0;
四、自定義順序表
publicclassArrList{
publicint[]arr;
publicintusedSize;
publicstaticfinalintDEFAULTSIZE=10;
publicArrList(){
this.arr=newint[DEFAULTSIZE];
//打印順序表
publicvoiddisplay(){
for(inti=0;ithis.usedSize;i++){
System.out.print(arr[i]+"");
System.out.println();
//新增元素,默認在數組最后新增
publicvoidadd(intdata)throwsNullException{
//1.數組為空,報空異常
if(isEmpty()){
thrownewNullException("數組為空");
//2.數組滿了,先增容
if(isFull()){
this.arr=newint[2*this.arr.length];
//3.進行新增
this.arr[this.usedSize]=data;
//4.元素+1
this.usedSize++;
privatebooleanisFull(){
//如果數組所放元素大于等于數組長度,那么數組滿了
returnthis.size()=this.arr.length;
privatebooleanisEmpty(){
returnthis.arr==null;
//在pos位置新增元素
publicvoidadd(intpos,intdata)throwsRuntimeException,IndexException{
//1.判斷數組是否為空
if(isEmpty()){
thrownewNullException("數組為空");
//2.判斷新增位置是否合法,拋數組越界異常
if(pos0||posthis.arr.length){
thrownewIndexException("數組越界");
//3.判斷數組是否已滿,進行擴容
if(isFull()){
this.arr=newint[2*this.arr.length];
//4.進行新增
for(inti=this.usedSize-1;i=pos;i--){
this.arr[i+1]=this.arr[i];
this.arr[pos]=data;
this.usedSize++;
//判定是否包含某個元素
publicbooleancontains(inttoFind){
for(inti=0;ithis.usedSize;i++){
if(toFind==this.arr[i]){
returntrue;
returnfalse;
//查找某個元素對應的位置
publicintindexOf(inttoFind){
for(inti=0;ithis.usedSize;i++){
if(toFind==this.arr[i]){
returni;
return-1;
//獲取pos位置的元素
publicintget(intpos)throwsIndexException{
//判斷pos位置是否合法
if(pos0||pos=this.usedSize){
thrownewIndexException("輸入pos位置數組越界");
}else{
returnthis.arr[pos];
//給pos位置的元素設為value
publicvoidset(intpos,intvalue)throwsNullException,IndexException{
if(isEmpty()){
thrownewNullException("數組為空");
//2.判斷新增位置是否合法,拋數組越界異常
if(pos0||pos=this.arr.length){
thrownewIndexException("數組越界");
this.arr[pos]=value;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業健康護理試題及答案
- 考生必看高級會計試題及答案
- 高級會計理論與實務試題及答案
- 防跌倒護理措施試題及答案
- 無人機市場趨勢分析試題與答案
- 財務報表審計的關鍵點及試題分析試題及答案
- 護理政策動態試題及答案
- 消防法律法規的試題及答案
- 高級審計師考試的應試規范 2024年試題及答案
- 外語水平考核題庫總結及答案
- YS/T 226.12-2009硒化學分析方法第12部分:硒量的測定硫代硫酸鈉容量法
- JB/T 20110-2016真空潤藥機
- GB/T 8152.4-2006鉛精礦化學分析方法鋅量的測定EDTA滴定法
- GB/T 35653.1-2017地理信息影像與格網數據的內容模型及編碼規則第1部分:內容模型
- GB/T 18742.1-2017冷熱水用聚丙烯管道系統第1部分:總則
- 德國的介紹圖文課件
- 2023年版下肢動脈硬化閉塞癥診治指南
- 兒童換牙期健康課件
- 硬筆書法:幼小銜接識字寫字教學課件
- 崇尚科學反邪教主題教育PPT反對邪教主題教育宣講課件
- 大眾Formel-Q培訓材料全解析含案例
評論
0/150
提交評論