鏈表操作
在c語言里我們通過結構體和數組這兩種數據結構構造線性表
- 創建順表表-數組靜態分配內存。
typedef struct {
char data[10];
int length;
}SqList;
bool ListInsert(SqList &L,int i,char e){
for (int j = L.length; j>=i; --j)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return true;
}
int main(){
SqList ls = {{'a','d'},12};
ListInsert(ls,1,'h');
printf(ls.data);
return 1;
}
- 動態數組
動態數組可以隨程序需要而重新指定大小數組,也就是給他動態分配內存空間,動態數組的內存空間是從堆動態分配的,所以需要用指針來指向它在堆內的地址,而且使用完畢需要我們手動去銷毀它。下面我們用一段代碼來展示一下
int *test;
test = (int *)malloc(sizeof(int)*5);
for (int i = 0; i < 5; ++i) {
test[i]=i;
}
printf("%d", sizeof(test));
上面的執行結果是8,很多人會有疑問,我們不是給test分配了5*8(int占8字節)的空間了嗎?為什么打印它的內存空間還是8,這里要說明一下,我們這里的test只是一個指針,也就是指向給我們分配內存空間的開頭地址,從開頭到下方的5×8的空間是專門給你用的,但你就僅僅是個int類型的指針,所以就只占8字節。
上面定義了指針,然后用它來動態分配內存空間,