郝斌老師資料結構筆記

2022-06-18 04:24:03 字數 3883 閱讀 2938

資料結構概述

定義:我們如何把現實中大量而複雜的問題已特定的

資料型別和特定的儲存結構儲存到主儲存器(記憶體)中,以及

在此基礎上位實現某個功能二執行的相應操作,

這個相應的操作也叫演算法。

資料結構解決儲存問題,演算法解決資料間的關係。

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

演算法=對儲存資料的操作。

狹義的演算法

演算法:解題的方法和步驟

衡量演算法的標準:1時間複雜度

大概程式要執行的次數,而非執行

的時間:執行步驟最多的最關最核心的要執行的次數

可以大概代表

2空間複雜度:演算法執行過程中大概

所占有的最大記憶體。

3 難易程度

4健壯性

前兩個最重要

(一般演算法有迴圈)

第三個內容:資料結構的地位

(資料結構是軟體中最核心的課程)

資料庫和資料結構的區別:

資料庫是資料結構的簡化版

程式:資料的儲存+資料段操作+可以被計算機之行的語言

預備知識:

偽演算法不是真正的演算法

通過語言來實現偽演算法,希望程式語言實現要通過指標。

鍊錶的知識很重要,以後都會用到。c++的指標不夠,學

c語言的用途是為了以後能看懂更高階的語言

*p就代表乙個變數,例如i 。int*p表示定義乙個存放整

形變數的位址的指標變數。

程式執行完,記憶體就終止了。

複習:1:指標:

int *p//p 是個變數名字,用來存放位址,只能儲存int型變數的位址

指標的重要性:是c語言的靈魂,

定義位址記憶體單元的編號(cpu只能訪問記憶體,不能訪問硬碟)

從0開始的非負整數,範圍為0——4g-1

指標就是位址,位址就是指標

指標變數是存放記憶體單元位址的變數

指標和指標變數不一樣

指正的本質是乙個操作受限的非負整數

分類:1 基本型別的指標(p=&i表示指標變數儲存i的位址,但是p為p,i為i兩者無任何關係,

但是*p和i卻是等效的兩者可以互換)

22:指標結構體

3:動態記憶體的分配和釋放。

4:記憶體的基本單位是位元組

5:&為取位址符號

6:# include <>

void f(int *p)

int main()

@@如何實現被掉函式修改主調函式中普通變數的值

1:實參為相關變數的位址(&i)

2:形參為以該變數的型別(int型)為型別的指標變數(指標變數p)

3:在被調函式中通過 *形參變數名的方式就可以修改主函式中普通變數的值

(*p和i可以等效替換兩者無任何區別)

指標和陣列(array)

陣列名 一位陣列名a是個指標常量

它存放的是一維陣列第乙個元素的位址,

它的值不能被改變

一維陣列名指向的是陣列的第乙個元素。

下表和指標的關係

a[i]<<==>>*(a+i)下標和指標的關係

假設指標變數的名字為p

則p+i的值是p+i*(p所指向的變數所佔的位元組數)

指標變數的運算

指標變數不能相加,乘除。

如果兩指標變數屬於同一陣列,則可以相減

指標變數可以相減一整數,前提是最終結果不能草果指標的範圍

p+i的值是p+i*(p所指向的變數所佔的位元組數)

p-i的值是p-i*(p所指向的變數所佔的位元組數)

p++《==》p+1

如何通過被調函式修改主函式中一位陣列的內容

兩個引數

存放陣列首元素的指標變數

存放陣列元素長度的整形變數

# include《

void show-array(int *p ,int len)

int main (void )

;show_arraya(a,5)//a等價於&a[0],&a[0]本身就是int *型別

return 0

}乙個double佔八個位元組,乙個位元組是8位,美乙個位元組都佔乙個位址。

指標變數都只佔四個位元組

p=&x 表示p只代表x的第乙個位元組的位址

如何通過函式修改時慘的值

#include <>

void f(int * q)//函式宣告

int main (void)

void f( int **q)

如果想改寫乙個變數的值,只需要傳送它的位址給被掉函式,否則無法實現對主函式中變數的值的改變。

結構體:

為什麼會出現結構體:為了表示一些複雜的資料,而普通的基本型別變數無法滿足要求

什麼叫結構體:(是 c++中類的過度)是使用者根據實際需要自己定義的復合資料型別

如何使用結構體:struct student=;

結構體 struct sudent * pst =&st;

1;2.

pst->sid

pst所指向的結構體中的sid這個成員

注意事項;結構體變數不能加減乘除,但是可以相互賦值

普通結構體變數和結構體指標變數作為函式傳參的問題

#include<>

#include<>//一串,一行

struct 結構體student

;//分號不能省

int main(void)

; printf("%d %s %d\n",

strcpy("lisi");"lisi";error

printf("%d %s %d\n",

//printf("%d %s %d\n",st);

return 0;

}結構體2

#include<>

#include<>//一串,一行

struct 結構體student

;//分號不能省

int main(void)

; 第一種方式

struct student* pst;//定義乙個指標變數,此指標變數只能存放我們自己定義的struct student型別的變數的位址

pst=&st;

pst->sid=99;//pst->sid等價於(*pst).sid 而(*pst).sid等價於所以pst->sid=

return 0;

}第八次課:

結構體:

1:為什麼會出現結構體

為了表示一些複雜的資料,而普通的基本型別變數無法滿足要求

2:什麼叫做結構體

使用者根據實際需要自己定義的復合資料型別

3:如何使用結構體

演算法1:

# include<>

struct student

;int main ()

; printf ("%d %s %d\n",

return 0;

}輸出結果:

2013213990 wangchuankun 2

請按任意鍵繼續. . .

有兩種方式:

1:4:注意事項

結構提變數不能加減乘除,但是可以相互賦值。

結構提變數和結構體指標變數作為函式傳參

演算法2:演算法目的:通過結構體呼叫指標給主函式中結構體變數賦值

#include <>

#include <>

struct student

;void f(struct student *pst)

int main ()

執行結果:

2013213990 wangchuankun 22

請按任意鍵繼續. . .

演算法3:演算法目的:通過結構體呼叫指標給主函式中結構體變數賦值

並且通過函式呼叫將主函式中的結構體變數依次輸出。

#include <>

#include <>

struct student

「資料結構」串講筆記

課程 21049 適用專業 計算機應用 計算機網路 串講教師 北京航空航天大學唐髮根 考試題型 第一部分選擇題 一 單項選擇題 每小題2分,共20分 第二部分非選擇題 二 填空題 每空2分,共20分 三 簡答題 15分 四 問題求解題 每小題10分,共20分 五 演算法填空題 25分 第一章緒論 主...

資料結構與拓撲資料結構

資料結構在gis中對於資料的採集 儲存 查詢 檢索和應用分析等操作方式有著重要的影響,一種高效率的資料結構應該具備以下幾個要求 1 組織的資料能夠表示要素之間的層次關係,便於不同資料聯絡於覆蓋 2 正確反映地理實體之間的空間排列方式和各實體之間的相互關係 3 便於訪問與檢索 4 節省儲存空間,減少資...

資料結構課後答案老師給的

第一章習題答案 2 3 1 包含改變量定義的最小範圍 2 資料抽象 資訊隱蔽 3 資料物件 物件間的關係 一組處理資料的操作 4 指標型別 5 集合結構 線性結構 樹形結構 圖狀結構 6 順序儲存 非順序儲存 7 一對 一 一對多 多對多 8 一系列的操作 9 有限性 輸入 可行性 4 1 a 2 ...