最近開始學習資料結構,覺得這門課蠻重要的,不論是刷題還是寫安卓,資料結構還是要學好的,學習資料結構,我還是用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);//排序
這個是自己寫的陣列,寫了一些基本的操作,也就是簡單複習一下c語言的相關知識,對指標複習和運用一下。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)}}
}
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.補充了動態陣列以及泛型的方法,使得功能...