




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Java實(shí)現(xiàn)順序表的操作詳解目錄一、順序表是什么二、自定義異常空引用異常下標(biāo)越界異常三、順序表的方法順序表的實(shí)現(xiàn)獲取順序表長(zhǎng)度順序表是否為空順序表是否為滿打印順序表末尾新增元素指定位置新增元素判斷是否包含某元素查找某個(gè)元素對(duì)應(yīng)的位置獲取pos位置的元素給pos位置的元素賦值刪除第一次出現(xiàn)的關(guān)鍵字key清空順序表四、自定義順序表
一、順序表是什么
順序表是用一段物理地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存儲(chǔ)。在數(shù)組上完成數(shù)據(jù)的增刪查改。
數(shù)組不就是一個(gè)現(xiàn)場(chǎng)的順序表嗎?但是數(shù)組并沒有直接向我們提供增刪查改的工具,所以我們必須重新實(shí)現(xiàn)一下順序表。
二、自定義異常
空引用異常
如果我們的順序表為空時(shí),手動(dòng)拋出空引用異常
publicclassNullExceptionextendsRuntimeException{
publicNullException(Stringmessage){
super(message);
下標(biāo)越界異常
當(dāng)我們進(jìn)行增刪查改時(shí),下標(biāo)越界時(shí),我們手動(dòng)拋出一個(gè)下標(biāo)越界異常
publicclassIndexExceptionextendsRuntimeException{
publicIndexException(Stringmessage){
super(message);
三、順序表的方法
順序表的實(shí)現(xiàn)
這里我們定義一個(gè)順序表,默認(rèn)容量為DEFAULTSIZE,實(shí)際大小為usedsize.
publicclassArrList{
publicint[]arr;
publicintusedSize;
publicstaticfinalintDEFAULTSIZE=10;
publicArrList(){
this.arr=newint[DEFAULTSIZE];
獲取順序表長(zhǎng)度
usedSize存儲(chǔ)的就是當(dāng)前順序表的長(zhǎng)度,直接返回即可。
publicintsize(){
returnthis.usedSize;
順序表是否為空
此方法我們只想在順序表內(nèi)部使用,所以我們定義為private.
privatebooleanisEmpty(){
returnthis.arr==null;
順序表是否為滿
此方法我們只想在順序表內(nèi)部使用,所以我們定義為private.
privatebooleanisFull(){
//如果數(shù)組所放元素大于等于數(shù)組長(zhǎng)度,那么數(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ù)組為空,報(bào)空異常
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.數(shù)組滿了,先增容
if(isFull()){
this.arr=newint[2*this.arr.length];
//3.進(jìn)行新增
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ù)組是否已滿,進(jìn)行擴(kuò)容
if(isFull()){
this.arr=newint[2*this.arr.length];
//4.進(jìn)行新增
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;
查找某個(gè)元素對(duì)應(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();
//新增元素,默認(rèn)在數(shù)組最后新增
publicvoidadd(intdata)throwsNullException{
//1.數(shù)組為空,報(bào)空異常
if(isEmpty()){
thrownewNullException("數(shù)組為空");
//2.數(shù)組滿了,先增容
if(isFull()){
this.arr=newint[2*this.arr.length];
//3.進(jìn)行新增
this.arr[this.usedSize]=data;
//4.元素+1
this.usedSize++;
privatebooleanisFull(){
//如果數(shù)組所放元素大于等于數(shù)組長(zhǎng)度,那么數(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ù)組是否已滿,進(jìn)行擴(kuò)容
if(isFull()){
this.arr=newint[2*this.arr.length];
//4.進(jìn)行新增
for(inti=this.usedSize-1;i=pos;i--){
this.arr[i+1]=this.arr[i];
this.arr[pos]=data;
this.usedSize++;
//判定是否包含某個(gè)元素
publicbooleancontains(inttoFind){
for(inti=0;ithis.usedSize;i++){
if(toFind==this.arr[i]){
returntrue;
returnfalse;
//查找某個(gè)元素對(duì)應(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆寧夏吳忠中學(xué)物理高二下期末調(diào)研試題含解析
- 農(nóng)村宅基地出租合同
- 2024年抗微生物藥項(xiàng)目投資分析及可行性報(bào)告
- 2025年內(nèi)蒙古烏蘭察布市集寧區(qū)集寧一中高一物理第二學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
- 2025屆廣東省惠州市第三中學(xué)高二物理第二學(xué)期期末調(diào)研模擬試題含解析
- 杭州住房公積金管理辦法
- 南陽市村衛(wèi)生室管理辦法
- 銀行跨境收支管理辦法
- 小長(zhǎng)假道路安全管理辦法
- 上海市生化機(jī)構(gòu)管理辦法
- 2025年河北省中考語文試卷真題及答案詳解(精校打印版)
- 青年人才專項(xiàng)答辯模板
- 口服靶向藥講課件
- 12024-2025學(xué)年暑假安全教育主題班會(huì)課件
- 金屬標(biāo)牌的粉末噴涂工藝考核試卷
- 肝膽外科醫(yī)學(xué)科普
- 能源轉(zhuǎn)型與碳市場(chǎng)機(jī)制協(xié)同的路徑優(yōu)化研究
- 2025年公路養(yǎng)護(hù)工人職業(yè)技術(shù)知識(shí)考試題與答案
- 陽光房制作安裝合同協(xié)議書范本8篇
- GB/T 45449-2025再生粉末高溫合金原料
- 工程投資人合同協(xié)議
評(píng)論
0/150
提交評(píng)論