資料結構 一 陣列和鍊錶

2021-09-22 04:41:50 字數 2805 閱讀 8546

1.實現乙個支援動態擴容的陣列

//定義陣列型別 

#define max_dim 8

//最大維數

typedef

struct

array;

//陣列生成演算法

intsetarray

(array*a,

int n,

int dim)

//生成n維陣列a的演算法,其中dim存放各維數長度

(*a)

.base =

(datatype*

)malloc

(etotal*

sizeof

(datatype));

//生成陣列空間 if(

!(*a).base)

return(0

);(*a)

.const=(

int*

)malloc

(n*sizeof

(int))

;//生成const空間if(

!(*a).

const

)return(0

);(*a)

.const

[n-1]=

1;for(i=n-

2; i>=

0; i--

)}

or

template 

void vector::

expand()

2.實現乙個大小固定的有序陣列,支援動態增刪改操作

3.實現兩個有序陣列合併為乙個有序陣列

1.實現單鏈表、迴圈鍊錶、雙向鍊錶,支援增刪操作

//節點型別描述

typedef

int datatype;

//設定當前資料元素為整型

typedef

struct node //節點型別

linknode,

*link;

//linknode為節點說明符,link為節點指標說明符

1)單鏈表

//建立單鏈表

link createlist()

//建立單鏈表的演算法

//輸入資料建立鍊錶

link createlist()

//建立單鏈表的演算法

r->next =

null

;//將尾節點的指標域置空

return

(h);

//返回已建立的頭節點

}

//查詢

//1.按序號查詢

link getelem

(link h,

int i)

//查詢單鏈表h中第i節點的指標的演算法

if(i==j)

return

(p);

//返回第i節點的指標

else

return

(null);

//查詢失敗,即i>表長

}//2.按值查詢(定位)

link locateelem

(link h, datatype e)

//在單鏈表中查詢元素值為x的節點的演算法

//前插

void

listinsert

(link h,

int i, datatype e)

//在單鏈表h中將節點x插入到節點ai之前的演算法

}

//刪除

void

lisedel

(link h,

int i)

//刪除單鏈表h中節點ai的演算法

else

error

(i);

//引數i出錯

}

2)迴圈鍊錶

將鍊錶的頭節點與尾節點連線起來即可

3)雙向鍊錶

//雙向鍊錶

typedef

struct dnode //雙向鍊錶節點

dlinknode,

*dlink

//前插

void

dinsert

(dlink l,

int i, datatype x)

//將節點x插入雙向鍊錶l中都第i節點之前的演算法

}

//刪除

void

ddelete

(dlink l,

int i)

//刪除雙向鍊錶中第i節點的演算法

}

2.實現單鏈表反轉

//實現單鏈表反轉

void l1n-

ln1(link h)

//求單鏈表h的倒置演算法

}

3.實現兩個有序的鍊錶合併為乙個有序鍊錶

//實現兩個有序的鍊錶合併為乙個有序鍊錶

void

merge

(link a, link b)

//將兩個遞增表合併成乙個遞增有序表的演算法

else}if

(p ==

null

) p = q;

//收尾處理

r->next = p;

}

4.實現求鍊錶的中間結點

資料結構 C 實現(一) 陣列鍊錶

資料結構c 實現第一發,主要有幾部分構成,分別是乙個抽象類linearlist.h 陣列鍊錶的標頭檔案arraylist.h以及main.cpp原始檔。linearlist.h檔案具體資訊如下 ifndef inc 01 arraylist linearlist h define inc 01 ar...

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的...

資料結構複習 線性表(一)陣列

include include define maxsize 20 struct lnode typedef struct lnode list 陣列線性表的指標重新命名 初始化乙個空表 list makeempty 查詢 在list線性表中查詢第乙個target元素的index int find ...