資料結構(C ) 向量 筆記1

2021-10-09 05:06:55 字數 2122 閱讀 4325

首先解決第乙個問題。直接在原有的物理記憶體空間的基礎上追加空間,不現實。陣列特定的定址方式,物理空間必須連續,我們無法保證,其尾部總是留有足夠的空間供其擴充套件。

一種可行的方法是如上圖所示,申請乙個容量足夠大的陣列,並將原來陣列中的資料進行複製,此後便可以插入新元素e而不至於溢位。當然,原陣列所佔的空間要進行釋放交還作業系統。

擴容演算法

template

<

typename t>

void vector

::expand()

該程式的關鍵是,新陣列的容量總是取原陣列容量的兩倍,也正是第二個問題的答案。

縮容演算法

template

<

typename t>

void vector

::shrink()

注:函式體中上面兩行沒有看明白,若有小夥伴看到了,麻煩告知一下!!!感謝。

直接引用元素

使用訪問陣列的方式訪問向量,可以通過過載操作符進行過載。

template

<

typename t> t & vector

::operator

( rank r )

//過載下標操作符

// assert: 0 <= r < _size

c++中round()函式的用法

置亂演算法

template

<

typename t>

void

permute

(vector

& v)

區間治亂介面

順序查詢的演算法

template

<

typename t>

//無序向量的順序查詢:返回最後乙個元素e的位置;失敗時,返回lo - 1

rank vector

::find ( t const

& e, rank lo, rank hi )

const

注:while迴圈的條件自減什麼時候進行,這裡有點疑問。while迴圈的控制邏輯由兩部分組成,首先判斷是否已抵達萬用字元,再判斷當前元素與目標元素是否相等。得益於c/c++語言中邏輯表示式的短路求值特性,在前一判斷非真後迴圈會立即終止,而不致因試圖引用已越界的秩(-1) 而出錯。

插入演算法

template

<

typename t>

//將e作為秩為r元素插入

rank vector

::insert ( rank r, t const

& e )

區間刪除
template

<

typename t>

int vector

::remove ( rank lo, rank hi )

單元素刪除
template

<

typename t> t vector

::remove ( rank r )

程式

c++中find函式用法

template

<

typename t>

int vector

::deduplicate()

筆記 C 資料結構 1

集合有什麼用?集合 collection 類是專門用於資料儲存和檢索的類。資料結構 導言是 計算機儲存 組織 管理資料的方式。是 指相互之間存在 一種或多種 特定關係的資料元素的集合。第三節 造船術 下一章 從前,有一片大陸 c 語言系統 上面有 預定義 很多個民族 變數型別 有int族,float...

R語言 資料結構 向量1

向量是r語言的核心,向量的元素必須屬於某種資料型別,在乙個向量中元素必須是同一資料型別。向量是最基本的資料型別。如果乙個函式作用到向量上,那麼它作用到該向量的每個元素之上。x 5,by 0.5 以步長0.5從1至5建立向量 等差數列 建立times length x 個元素的向量 rep x,tim...

資料結構筆記1

資料結構中關於線形表的描述,因為剛開始學也當是對大學未學這門課的補充吧,決定仔細學。沒想到一學還真發現自己程式設計中不少問題。首先對教材的理解上,重新拾起c語言。發現對結構定義和使用上存在盲點。對指象結構的指標既然不知。所以對can通訊 一知半解。現在回想起來有茅塞頓開的感覺。對於c程式設計中涉及到...