資料結構 指標基礎

2021-10-23 02:26:40 字數 2096 閱讀 8893

資料結構=個體+個體的關係

演算法=對儲存結構的操作(狹義)

衡量演算法的標準

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...