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