




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第Java實現(xiàn)順序表的操作詳解目錄一、順序表是什么二、自定義異??找卯惓O聵嗽浇绠惓H?、順序表的方法順序表的實現(xiàn)獲取順序表長度順序表是否為空順序表是否為滿打印順序表末尾新增元素指定位置新增元素判斷是否包含某元素查找某個元素對應(yīng)的位置獲取pos位置的元素給pos位置的元素賦值刪除第一次出現(xiàn)的關(guān)鍵字key清空順序表四、自定義順序表
一、順序表是什么
順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存儲。在數(shù)組上完成數(shù)據(jù)的增刪查改。
數(shù)組不就是一個現(xiàn)場的順序表嗎?但是數(shù)組并沒有直接向我們提供增刪查改的工具,所以我們必須重新實現(xiàn)一下順序表。
二、自定義異常
空引用異常
如果我們的順序表為空時,手動拋出空引用異常
publicclassNullExceptionextendsRuntimeException{
publicNullException(Stringmessage){
super(message);
下標越界異常
當我們進行增刪查改時,下標越界時,我們手動拋出一個下標越界異常
publicclassIndexExceptionextendsRuntimeException{
publicIndexException(Stringmessage){
super(message);
三、順序表的方法
順序表的實現(xiàn)
這里我們定義一個順序表,默認容量為DEFAULTSIZE,實際大小為usedsize.
publicclassArrList{
publicint[]arr;
publicintusedSize;
publicstaticfinalintDEFAULTSIZE=10;
publicArrList(){
this.arr=newint[DEFAULTSIZE];
獲取順序表長度
usedSize存儲的就是當前順序表的長度,直接返回即可。
publicintsize(){
returnthis.usedSize;
順序表是否為空
此方法我們只想在順序表內(nèi)部使用,所以我們定義為private.
privatebooleanisEmpty(){
returnthis.arr==null;
順序表是否為滿
此方法我們只想在順序表內(nèi)部使用,所以我們定義為private.
privatebooleanisFull(){
//如果數(shù)組所放元素大于等于數(shù)組長度,那么數(shù)組滿了
returnthis.size()=this.arr.length;
打印順序表
publicvoiddisplay(){
for(inti=0;ithis.usedSize;i++){
System.out.print(arr[i]+"");
System.out.println();
末尾新增元素
publicvoidadd(intdata)throwsNullException{
//1.數(shù)組為空,報空異常
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.數(shù)組滿了,先增容
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.判斷數(shù)組是否為空
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.判斷新增位置是否合法,拋數(shù)組越界異常
if(pos0||posthis.arr.length){
thrownewIndexException("數(shù)組越界");
//3.判斷數(shù)組是否已滿,進行擴容
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;
查找某個元素對應(yīng)的位置
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位置數(shù)組越界");
}else{
returnthis.arr[pos];
給pos位置的元素賦值
publicvoidset(intpos,intvalue)throwsNullException,IndexException{
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.判斷新增位置是否合法,拋數(shù)組越界異常
if(pos0||pos=this.arr.length){
thrownewIndexException("數(shù)組越界");
this.arr[pos]=value;
刪除第一次出現(xiàn)的關(guān)鍵字key
publicvoidremove(inttoRemove)throwsNullException{
if(isEmpty()){
thrownewNullException("數(shù)組為空");
intret=indexOf(toRemove);
if(ret==-1){
System.out.println("不存在此數(shù)");
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();
//新增元素,默認在數(shù)組最后新增
publicvoidadd(intdata)throwsNullException{
//1.數(shù)組為空,報空異常
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.數(shù)組滿了,先增容
if(isFull()){
this.arr=newint[2*this.arr.length];
//3.進行新增
this.arr[this.usedSize]=data;
//4.元素+1
this.usedSize++;
privatebooleanisFull(){
//如果數(shù)組所放元素大于等于數(shù)組長度,那么數(shù)組滿了
returnthis.size()=this.arr.length;
privatebooleanisEmpty(){
returnthis.arr==null;
//在pos位置新增元素
publicvoidadd(intpos,intdata)throwsRuntimeException,IndexException{
//1.判斷數(shù)組是否為空
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.判斷新增位置是否合法,拋數(shù)組越界異常
if(pos0||posthis.arr.length){
thrownewIndexException("數(shù)組越界");
//3.判斷數(shù)組是否已滿,進行擴容
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;
//查找某個元素對應(yīng)的位置
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位置數(shù)組越界");
}else{
returnthis.arr[pos];
//給pos位置的元素設(shè)為value
publicvoidset(intpos,intvalue)throwsNullException,IndexException{
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.判斷新增位置是否合法,拋數(shù)組越界異常
if(pos0||pos=this.arr.length){
thrownewIndexException("數(shù)組越界");
this.arr[pos]=value;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏電站個人年終總結(jié)模版
- 從概念到落地探討如何利用區(qū)塊鏈推動企業(yè)數(shù)字化轉(zhuǎn)型
- 倉庫廠房加盟合同范例
- 2025年初中數(shù)學(xué)教師年度考核個人總結(jié)模版
- 低價漁具轉(zhuǎn)讓合同范例
- 中介住宅租賃合同范例
- 在家長會上的小學(xué)生發(fā)言稿模版
- 創(chuàng)新研發(fā)背景下科技企業(yè)市場擴張風(fēng)險控制策略
- 中英雙語購銷合同范例
- 醫(yī)療大數(shù)據(jù)時代的醫(yī)療質(zhì)量管理
- 2025-2030城市燃氣產(chǎn)業(yè)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 緊固件制造企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 優(yōu)化醫(yī)患溝通提高腫瘤治療效果的途徑
- 2025北京九年級(上)期末語文匯編:文言文閱讀
- 越出站界調(diào)車RAILWAY課件
- 部隊物資儲備管理制度
- 河北武安招聘警務(wù)輔助人員筆試真題2024
- 2025年高級插花花藝師(三級)理論考試題(附答案)
- 醫(yī)院醫(yī)用耗材培訓(xùn)
- 《生豬價格波動及預(yù)測研究的國內(nèi)外文獻綜述7000字》
- 2025年五年級下冊英語單詞表
評論
0/150
提交評論