資料結構=個體+個體的關係
演算法=對儲存結構的操作(狹義)
衡量演算法的標準
1、時間複雜度
大概程式執行的次數
2、空間複雜度
演算法執行過程中大概占用的最大記憶體
3、難易程度
4、健壯性
一、指標基礎
int* p //p是個變數名字,int * 表示該p變數只能儲存int型變數的位址
定義:範圍:0——fffffff【4g-
1】指標變數是存放記憶體單元位址的變數
指標的本質是乙個操作受限的非負整數
分類:1基本型別的指標
如何通過被調函式改變主函式中普通變數的值
2、形參為以該變數型別為型別的指標變數
3、在被調函式中通過 *形參變數名的方式可以改變主函式中普通變數的值
voidf(
int* p)
intmain
(void)陣列
一維陣列名指向的是陣列的第乙個元素
下標和指標的關係
a[i]==*
(a+i)
void
show_array
(int
* p,
int len)
intmain
(void);
show_array
(a,5);
//a等價於&a[0],&a本身就是int * 型別
return0;
}指標變數的運算
指標變數不能相加,不能相乘,不能相除
如果兩指標變數屬於同一陣列,則可以相減
指標變數可以加減一整數,前提是最終結果不能超過指標的範圍
p+i的值是p+i*(p所指向的變數所佔的位元組數)
p-i的值是p-i*(p所指向的變數所佔的位元組數)
p++== p+
1int
main()
q=&arr[0]
;printf
("%p\n"
, q)
;//%p是以十六進製制輸出
q=&arr[1]
;printf
("%p\n"
, q)
;return0;
}voidf(
int* p)
;int
main()
voidf(
int* p)
voidf(
int*
* p)
intmain()
二、結構體;+
//類class
student
void
showstudent()
}//結構體
struct student
;//分號不能省略
intmain()
;printf
("%d %s %d\n"
, st.sid, st.name, st.age)
;st.sid =
99//方法一
struct student * pst;
//方法二
pst =
&st;
pst-
>sid =99;
//等價於(* pst).sid ,等價於st.sid
//pst所指向的結構體變數中的sid這個成員
return0;
}注意事項:
結構體變數不可以加減乘除,可以相互賦值
普通結構體變數和結構提指標變數作為函式引數的問題
struct student
;voidf(
struct student * pst)
;voidg(
struct strudent st)
;voidg2(
struct student)
intmain
(void
)//這種方式號內測,耗時間 不推薦
voidg(
struct strudent st)
voidg2(
struct student)
voidf(
struct student * pst)
資料結構 指標知識
int p其實是乙個指標變數,該指標變數只能儲存int型別的資料的位址。9 指標陣列與指向一維陣列的指標變數 1 指標陣列 乙個陣列,它的元素都為指標型別。定義方式為 型別說明 陣列名 整型常量表示式 如 char s 4 則定義了乙個指標陣列,即s 0 s 1 s 2 s 3 均用來存放位址值,主...
資料結構基礎
資料結構定義 定義 一 資料元素集合 也可稱資料物件 中各元素的關係。定義 二 相互之間存在特定關係的資料元素集合。資料結構的種類 1 集合 2 線性結構 3 樹形結構 4 圖狀結構 或網狀結構 資料結構的形式定義 資料結構名稱 d,s 其中d為資料元素的有限集,s是d上關係的有限集 邏輯結構 資料...
基礎資料結構
1 雙鏈表。下面是c 版本的實現。include stdafx.h include 結構體 typedef struct nodedlink 初始化 void dlist dlink dl 求長度 int dlength dlink dl return i 查詢 dlink dsearch dlin...