資料結構之陣列鍊錶樹小結

2021-09-01 18:14:20 字數 1455 閱讀 1877

最近學習了資料結構中的陣列、鍊錶和樹,寫得過程並沒有出現什麼很難解決的困難,但是總需要對自己的思路進行一次又一次的整理,並且在這個過程找的自己的錯誤以及對編碼思路進行優化。在這裡分享的主要是自己寫得**。

陣列的性質:陣列是定長的(在陣列宣告時,一定要寫明陣列的大小,否則會報錯)

,有序的,陣列中的每個元素都有乙個唯一的索引位置。

陣列的定義:型別 變數的名稱=new 型別[大小]

e.g.

int arr=new int;

string arr2=new string;

陣列的實現:

這裡只將陣列類的定義寫出來:

//輸出的陣列中的位置從一開始,但是儲存的陣列中位置從零開始。

例如12,23,34這個陣列中,輸出時顯示的是1:12,2:23,3:34,但是在計算機中儲存的時候,是0:12,1:23,2:34.

public class arraylist implements list

}return min;

}//將陣列輸出

public void paint()

if(oarr.length%4!=0)

system.out.println();}}

陣列佇列的應用例子:

五子棋中棋子擺放位置的記錄。

在五子棋的滑鼠***中

public class chessaction implements mouselistener

public void mouseclicked(mouseevent e) else

//利用陣列來儲存五子棋的座標資訊

arrshapes[count++]=cs;

gp.filloval(e.getx()-20,e.gety()-20,40,40); }}

鍊錶:鍊錶和陣列儲存最大的乙個區別就是,鍊錶節點中除了資料,還包含了下乙個節點的位置。這使得我們對鍊錶上的資料查詢這個過程方便很多。

鍊錶節點的定義:

public class linknode

建立鍊錶:

public class creatlink

else

count++;

}//新增一系列節點

public void add(object object)}}

//測試,將節點陣列輸出

for(int i=0;i}//對哈夫曼樹進行編碼,並將編碼輸出

public void print(hfmnode node)

if(node.left!=null)

if(node.right!=null) }}

不管是建立陣列、鍊錶還是樹,其實我覺得,最重要是我們的邏輯清晰,對陣列、鍊錶還有樹的定義理解透徹,在編寫**是,難免會出現錯誤,我會努力嘗試自己乙個人找出錯誤。我覺得,自己找自己的錯誤是乙個很好的學習機會,但是在找到錯誤之後,一定要總結一番。不然,即使改錯了,但自己也不一定知道錯了什麼,最好就能找同學朋友討論一番。

資料結構 之 鍊錶 樹

鍊錶typedef struct lnode lnode lnode p lnode malloc sizeof lnode p next null c class lnode lnode p new lnode 靜態鍊錶,下標代表位址,陣列值代表data typedef struct lnode ...

資料結構 表之煉表

頭插法建立 尾插法建立 顯示 銷毀 include include using namespace std typedef int elemtype typedef struct lnode linklist void createlinklistf linklist l,elemtype a,in...

資料結構之鍊錶

頭結點 第乙個有效結點之前的那個結點 頭結點並不存有效資料 加頭結點的目的主要是為了方便對鍊錶的操作 頭指標 指向頭結點的指標變數 尾指標 指向尾節點的指標變數 如果希望通過乙個函式對鍊錶進行處理,只需要乙個引數 頭指標 首先要定義乙個單鏈表儲存結構 然後建立乙個空表,即初始化,我寫的這個提前設定好...