點滴資料結構(c )

2021-09-26 20:22:47 字數 2369 閱讀 8696

基本概念:

資料結構的分類:

從邏輯上而言:表示資料元素之間的關係。

從儲存的物理結構,也就是資料在計算機中的儲存形式:

int

*p =

newint

;// 會自動進行進行型別轉換,得到int型別的指標

point *p =

new point[

100]

;//得到乙個陣列指標

delete

p ;//釋放該陣列

delete p ;

// 僅僅釋放指標p所指向的第乙個,而失去其他位置的空間,而無法復用他們

類的封裝過程中包含了private函式以及public函式。為了使另外的類能夠訪問本類的private函式,可以通過友元對其「賦予許可權」。

class

list

;//類的前視說明

class

linknode

class

list

友元的關係不具有對稱性。這裡,linknode類中生命了list是它的友元,**list的所有成員都可以直接使用linknode的私有成員,反之,linknode則不能。

單鏈表的儲存結構

typedef

struct node

;

單鏈表的插入與刪除

插入:在表的第乙個節點;插入在首尾節點;插入在尾節點。

刪除:刪除第乙個節點;刪除中間或尾部。

整表建立

舉例:前插入法

for (int i = 0; i < count; i++)

整表刪除

status clearlist

(linklist *l)

return ok ;

}

鍊錶需要進行指標操作,那麼能不能將這種指標的方式來進行通用化,使一些沒有指標的程式語言也能利用這種操作呢。這裡可以利用陣列。

讓陣列的元素由兩個資料域組成,data與cur。資料域用來表示data,cur來表示next指標,存放該元素的下乙個陣列在陣列中的位置,稱cur為游標。用陣列來描述的鍊錶叫做靜態鍊錶

// 代表棧內的乙個元素

typedef

struct stacknodestacknode,

*linkstackptr;

typedef

struct linkstack

//example

// 在棧中插入元素

bool

push

(linkstack *s, elemtype e)

//同理,有出棧操作為(將棧頂值返回為e並刪除棧頂)

bool

pop(linkstack *s, elemtype *e)

佇列中,如果資料要進行頻繁的出隊入隊操作,鏈式結構可能需要頻繁的進行記憶體分配等操作,帶來很大的開銷。

迴圈佇列就很適合這樣的問題,它的主要特點在於:定義了佇列的maxsize,以及由兩個指標來指示佇列中資料。

下面給出構造迴圈佇列的類的**。

class

sqqueue

;

佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它能尾進頭出罷了。

下面給出鏈佇列的結構。這個需要定義兩個東西,其一是佇列中每乙個element結構的定義,按照鏈式佇列,中間的每乙個元素都包含了資料部分以及指標部分。其二則是佇列結構的定義,佇列是有許多個element組成的,有許多的成員函式,以及有頭指標和尾指標。佇列元素可用用class定義或者struct結構體進行定義,這裡,我均採用class來定義

template

<

class

t>

class

qnode

;template

<

class

t>

class

linkqueue

;//佇列的初始化

void linkqueue::

initqueue

(linkqueue *q)

樹的儲存結構

雙親表示法

孩子表示法

孩子兄弟表示法

C 資料結構

c 中實現通用資料結構 在程式設計當中經常會出現使用同種資料結構的不同例項的情況。例如 在乙個 程式中可以使用多個佇列 樹 圖等結構來組織資料。同種結構的不同例項,也 許只在資料元素的型別或數量上略有差異,如果對每個例項都重新定義,則非常麻 煩且容易出錯。那麼能否對同種型別資料結構僅定義一次呢?答案...

資料結構 C

本文將根據自己對資料結構的理解,介紹資料結構的基本型別 鍊錶。寫的不好的地方歡迎指正。首先是單鏈表。結點資料結構定義 struct node return false 3 刪除元素 bool delete node first,int x 現在介紹雙鏈表 首先也是結點結構定義 struct node...

C 資料結構

c c 陣列允許定義可儲存相同型別資料項的變數,但是結構是 c 中另一種使用者自定義的可用的資料型別,它允許您儲存不同型別的資料項。結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性 為了定義結構,您必須使用struct語句。struct 語句定義了乙個包含多個成...