數(shù)據(jù)結構概述
定義
- 定義:我們如何把現(xiàn)實中大量而復雜的問題以特定的數(shù)據(jù)類型和特定的存儲結構保存到主存儲器(內存)中,以及在此基礎上為實現(xiàn)某個功能(比如查找某個元素瑞驱,刪除某個元素娘摔,對所有元素進行排序)而執(zhí)行的相應操作,這個相應的操作也叫算法唤反。
<font color=red>
數(shù)據(jù)結構 = 個體的存儲 + 個體的關系存儲
算法 = 對存儲數(shù)據(jù)的操作
</font>算法:解題的方法和步驟
衡量算法的標準:
1.時間復雜度(大概程序要執(zhí)行的次數(shù)凳寺,而非執(zhí)行的時間 )
2.空間復雜度(算法執(zhí)行過程中大概所占用的最大內存)
3.難易程度
4.健壯性數(shù)據(jù)結構的地位:數(shù)據(jù)結構是軟件中最核心的課程
程序 = 數(shù)據(jù)的存儲 + 數(shù)據(jù)的操作 + 可以被計算機執(zhí)行的語言
預備知識
- 指針
- 結構體
- 動態(tài)內存的分配和釋放
指針
指針的重要性:指針是c語言的靈魂
地址:內存單元的編號
從0開始的非負整數(shù)
范圍: 0 -- FFFFFFFF[0 -- 4G-1]指針:指針就是地址 地址就是指針
指針變量是存放內存單元地址的變量
指針的本質是一個操作受限的非負整數(shù)
#include <stdio.h>
void Show_Array(int *p, int len)
{
//p[i]就是主函數(shù)的a[i] //p[0] == *p p[2] == *(p+2) == *(a+2) == a[2]
int i = 0;
for(i = 0; i < len; ++i)
printf("%d\n",p[i]);
}
int main(void)
{
int a[5] = {1,2,3,4,5};
Show_Array(a, 5); //a 等價于&a[0], &a[0]本身就是int *類型
return 0;
}
2020/04/04