資料結構(一) 陣列的操作

2021-08-08 09:29:37 字數 1730 閱讀 7070

最近開始學習資料結構,覺得這門課蠻重要的,不論是刷題還是寫安卓,資料結構還是要學好的,學習資料結構,我還是用c語言來實現,好理解一點。

資料結構中最基本的乙個結構就是線性結構,而線性結構又分為連續儲存結構和離散儲存結構。所謂的連續儲存結構其實就是陣列。

陣列本質其實也是資料的一種儲存方式,既然有了資料的儲存,就會涉及到如何對資料進行定址的問題。首先,先說一下在陣列中資料是如何儲存的,在記憶體中,陣列中的資料是以一組連續的資料集合的形式存在於記憶體中。當我們訪問存在於記憶體中的陣列時,我們應該找到其在記憶體中的位址,當我們找到資料的位址後我們就可以找到對應的資料.

了解了以上知識後,第乙個問題就來了,如何才能找到資料在記憶體中的位址?這個問題其實很簡單,因為陣列在記憶體中是一組連續的資料集合,所以我們只要知道陣列首位址,然後通過對應位元組長度的加減就可以找到對應位元組數的資料,有了這些就可以定義出我們的陣列,但是,作為乙個合理的陣列,還應該有陣列長度的標誌len和陣列有效元素的標誌cnt。由此給出對陣列的定義(本例中採用結構體,對結構體不了解的朋友可以)

struct arr;
對一種儲存方式,對其的操作一般就是,初始化,增加,刪除,排序,插入這些,把這些基本的操作完成,就差不多了

void init_arr(struct arr*parr,int

length); //初始化

bool insert_arr(struct arr*parr,int pos,int val);//插入 位置pos從1開始,值

bool delete_arr(struct arr*parr,int pos,int *pval);//刪除

bool is_full(struct arr*parr);//判斷是否是滿的

bool is_empty(struct arr*parr);//判斷是否為空

void show_arr(struct arr*parr);//輸出

void inversion_arr(struct arr*parr);//倒置

void sort_arr(struct arr*parr);//排序

void init_arr(struct arr*parr,int length) 

else

} bool is_empty(struct arr*parr)

bool is_full(struct arr*parr)

if(is_full(parr))

return

false;

else

}bool insert_arr(struct arr*parr,int pos,int val)

parr->pbase[pos-1] = val;

(parr->cnt)++

return

true;

}bool delete_arr(struct arr*parr,int pos,int *pval)

parr->cnt--;

return

true;

}void inversion_arr(struct arr*parr)

} void show_arr(struct arr*parr)

printf("\n");

} }void sort_arr(struct arr*parr)}}

}

這個是自己寫的陣列,寫了一些基本的操作,也就是簡單複習一下c語言的相關知識,對指標複習和運用一下。

javascript資料結構(一)陣列

一 陣列的建立於初始化 var day new array var day new array 7 指定長度 var day new array 0,1,2,3,4 var day 二 陣列的訪問 使用for迴圈遍歷陣列 三 給陣列新增元素 array array.length 10 使用push的...

一 資料結構

char cs new char char cs1 new char 4 cs1 0 a 注意 注意陣列下標越界 char cs new char system.out.println cs 4 特點 1.記憶體位址連續,使用之前必須指定陣列長度 2.可以通過下標訪問的方式訪問成員,查詢效率高 3....

資料結構學習(一) 陣列

2019年2月27日第一次書寫.2019年7月20日第二次書寫並修改完善.一 學習之路 二 實現內容 1.array類裡面實現的眾多陣列的基本操作,包括增 刪 查 改等方法 2.main函式裡面完成了對array方法的測試,並通過println顯示測試結果 3.補充了動態陣列以及泛型的方法,使得功能...