數據結構筆記第1章

數據結構定義

我們如何把現實中大量而複雜的問題一特定的數據類型和疼定的存儲機構保存到主存儲器(內存)中,一節在此基礎上爲實現某個功能(比如查找某個元素,刪除某個元素,對所有元素進行排序)而執行的相應操作,這個相應的操作也叫算法。

數據結構=個體+個體的關係
算法=對存儲數據的操作

衡量算法的標準

1.時間複雜度 大概程序要執行的次數,而非執行的時間
2.空間複雜度
3.難易程度
4.健壯性

內存

1.內存是用來存儲數據的設備,他的存儲速度結餘寄存器和硬盤之間;
2.內存是CPU唯一可以訪問的大容量的存儲設備!所有硬盤中的程序和數據必須調入內存之後方可被CPU執行!切記:CPU不能直接處理硬盤中的數據!
3.內存的問題是軟件開發中最核心的問題之一!如:內存的分配,內存的釋放,內存什麼時候分配,內存什麼時候釋放,由誰來分配,分配在什麼地方,訪問權限如何!
4.內存是多字節組成的線性一維存儲空間
5.內存的基本劃分單位是字節
6.每個字節含有8位,每一位 存放1個0或者1個1
7.字節和編號是一一對應的。每個字節都有一個唯一確定的編號,一個編號對應一個字節!這個編號叫做地址
8.一個系統所能管理的內存空間的大小取決於參與編號的二進制位數!

軟件運行與內存關係 : 內存是在操作系統的統一管理下使用的!

1.軟件在運行前需要向操作系統申請存儲空間,在聶村空閒空間足夠是,操作系統將分配一段內存空間並將外存中軟件拷貝一份存入空間中,並啓動該軟件的運行!
2.在軟件運行期間,該軟件所佔內存空間不再分配給其他軟件
3.當軟件運行完畢後,操作系統將回收該內存空間(注意:操作系統並不清空該內存空間中遺留下來的數據),以便再次分配給其他軟件使用
綜上所述,一個軟件所分配到的空間中極可能存在着以前其他軟件使用過後的殘留數據,這些數據被稱之爲垃圾數據。所以通常情況下我們爲一個變量,爲一個數組,分配好存儲空間之後都要對該內存空間初始化!

程序結構的地位
數組結構是軟件中最核心的課程

程序=數據結構的存儲 + 數據的操作 + 可以被計算機執行的語言

預備知識
指針
指針的重要性:

表示一些複雜的數據結構
快速的傳送數據
使函數返回一個以上的值
能否直接訪問硬件
能夠方便的使用數組和字符串
是理解面嚮對象語言中引用的基礎
指針是C語言的靈魂

定義

地址:內存單元的編號;從0開始的非負整數;範圍0-FFFFFFFF【0到4G-1】
指針:指針就是地址,地址就是指針;指針變量就是存放內存單元地址的變量;指針本質上就是一個操作受限的非負整數

分類
1、基本類型指針

基本概念
1.如一個指針變量(假定爲p)存放了某個普通變量(假定爲i)的地址,那我們就可以說:“p指向了i”,但p與i是兩個不同的變量,修改p的值不影響i的值,修改i的值不影響p的值
2.*p等價於i  或者說*p可以與i在任何地方互換
3.如果一個指針指向了某個普通變量,則 *指針變量 就完全等價於 該普通變量
注意:
1.指針變量也是變量,只不過它存放的不能是內存單元的內容,只能存放內存單元
2.普通變量前不能加*
3.常量和表達式前不能加&
如何通過被調函數修改主調函數中普通變量的值
1.實參爲相關變量的地址
2.形參爲以該變的類型爲類型的指針變量
3.在被調函數中通過 *形參變量名 的方式就可以修改主函數

2、指針和數組

指針 和 一維數組
數組名
1.一維數組名是個指針常量;
2.它存放的是一維數組第一個元素的地址
3.它的值不能被改變
4.一維數組名指向的是數組的第一個元素
下標和指針的關係:a[i]<<==>>*(a+i)
如何通過被調函數修改主調函數中一維數組的內容
    兩個參數
        存放數組首元素的指針變量
        存放數組元素長度的整形變量
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章