資料結構 順序表初始化時必須傳位址

2021-09-09 07:49:06 字數 629 閱讀 4543

順序表在進行初始化操作中必須傳位址,否則,一切都是徒勞。

•以下,通過畫圖的形式詳細介紹為什麼要傳位址而不能傳值

大家了解c語言的肯定知道傳值和傳址的區別,但是在學習資料結構時不得不強調傳址的重要性。

傳值:圖1.17中程式執行時,先給實參 sl 分配一塊儲存空間,sl 中包括 data[100] 及 nlength 。緊接著,在呼叫 initlist() 時,為形參 list 分配同樣的一塊空間 。此時,list 是 sl 的乙份拷貝。那麼,在執行操作時,使得 list 中的 nlength 為0。此時,函式呼叫完之後,形參 list 會被釋放,返回主函式之後,我們發現 sl 中的 nlength 依然為0,因此順序表內容並沒有被改變。

傳址:和上述執行順序一樣,在給形參分配儲存空間時,list 獲得一塊固定大小的空間,並且 list 直接指向實參 數量 sl 。當執行 initlist() 時,同時改變了  sl 中 nlength 的值,之後 list 的 釋放並沒有影響。

綜上,在進行初始化操作時,必須通過指標傳遞,傳值是行不通的。採用傳值得方式,不僅不能改變實參,而且在很大程度上浪費了更多的時間和空間 。

資料結構 順序表的初始化

include include define ok 1 define overflow 2 define maxsize 100 define list init size 10 線性表儲存空間的初始分配量 typedef int status status是函式資料型別 其值是函式結果狀態,如ok...

C 資料結構 順序表初始化及其增刪改查

include include define maxsize 20 順序表的最大長度 define n 11 using namespace std 實現順序表的初始化和增刪改查 注意 該程式預設順序表的第0個位置不用,元素從1開始存放 typedef struct sqlist 順序表初始化函式 ...

資料結構實踐 初始化順序表怎麼就記憶體溢位了?

有學生調程式,是要建順序表。他的程式是這樣的 include include define maxsize 50 maxsize將用於後面定義儲存空間的大小 typedef int elemtype elemtype在不同場合可以根據問題的需要確定,在此取簡單的int typedef struct ...