*c語言中只有定義了變數才會分配記憶體,定義資料型別不會分配記憶體。
1、特點:元素型別相同,大小相等。
2、優缺點
優點:訪問速度很快。
缺點:插入刪除元素很慢,空間通常有限制,事先必須知道陣列的長度,需要大塊連續記憶體。
1、定義:n個結點離散分配,彼此通過指標相連,每個結點只有乙個前驅結點,只有乙個後續結點,首結點沒有前驅結點,尾結點沒有後繼結點。
*專業術語:
1)首結點 第乙個有效結點
2)尾結點 最後乙個有效結點
3)頭結點 頭結點的資料型別和首結點型別一樣
第乙個有效結點之前的結點
頭結點並不存放有效資料
加頭結點的目的是為了方便對鍊錶的操作
4)頭指標 指向頭結點的指標變數
5)尾指標 指向尾結點的指標變數
*如果希望通過乙個函式對鍊錶進行處理,我們至少需要接收鍊錶的哪些引數?
只需要乙個引數(頭指標)--通過頭指標可以推出鍊錶的其他所有資訊
2、分類
1)單鏈表/雙鏈表,迴圈鍊錶/非迴圈鍊錶
2)雙鏈表:每乙個結點有兩個指標域,迴圈鍊錶:能通過任何乙個結點找到其他所有的結點
3、演算法:遍歷 查詢 清空 銷毀 求長度 排序 刪除結點 插入結點
1)插入結點
r=p->pnext; p->pnext=q; q->pnext=r;
q->pnext=p->pnext;p->pnext=q
2)刪除結點
r=p->pnext;
p->pnext=p->pnext->pnext;
free(r); //記憶體需要手動釋放
4、優缺點
優點:空間沒有限制,插入刪除元素很快。
缺點:訪問速度很慢。
1、普通結構體變數和結構體指標變數作為函式傳參的問題:
1)普通變數耗記憶體,耗時間,不推薦使用;
2)指標變數只傳遞位址,占用記憶體小,快。
2、結構體變數不能加減乘除,能賦值。
1、必須手動free釋放記憶體
2、(int *)malloc(sizeof(int)*len); //首位元組--轉換為int型
3、跨函式使用記憶體必須用malloc動態分配
int main()
int fun(int **q)
*泛型:利用某種技術達到的效果就是:不同的儲存方式,執行的操作是一樣的。
資料結構基礎1
資料結構是計算機儲存 組織資料的方式。好的資料結構可以帶來更高的執行或者儲存效率,資料結構往往同檢索演算法和索引技術有關。乙個資料結構的設計過程分成抽象層 資料結構層和實現層。其中,抽象層是指抽象資料型別層,它討論資料的邏輯結構及其運算,資料結構層和實現層討論乙個資料結構的表示和在計算機內的儲存細節...
Pytorch學習筆記 1 基礎資料結構
參考連線 torch.tensor是乙個多維矩陣,其中包含單個資料型別的元素,使用cpu和gpu及其變體定義了10種張量型別,如下所示 data type dtype cpu tensor gpu tensor 32位浮點 torch.float32 or torch.float torch.flo...
資料結構筆記1
資料結構中關於線形表的描述,因為剛開始學也當是對大學未學這門課的補充吧,決定仔細學。沒想到一學還真發現自己程式設計中不少問題。首先對教材的理解上,重新拾起c語言。發現對結構定義和使用上存在盲點。對指象結構的指標既然不知。所以對can通訊 一知半解。現在回想起來有茅塞頓開的感覺。對於c程式設計中涉及到...