資料結構課程學習(3)

2021-10-03 02:51:21 字數 2413 閱讀 1434

只允許一端進行插入或刪除的線性表

棧頂,允許進行插入和刪除

棧底,固定不變

按照先進後出的原則

棧是線性表的特例,棧的順序儲存結構也叫順序棧

#define maxsize 50 //定義棧中元素的最大個數

typedef struct sqstack; //順序棧的簡寫

【注意】

1.top值不能超過maxsize

2.空為top== -1,滿棧為top==maxsize-1,棧的資料元素個數為top-1

1.判空

bool stackempty(sqstack s)
2.進棧
bool push(sqstack &s ,elemtype x)
3.出棧
bool pop(sqstack &s,elemtype &x)
4.讀取棧頂元素
bool gettop(sqstack s,elemtype &x)
#define maxsize 100 //定義棧中元素的最大個數

typedef struct sqdoublestack; //順序共享棧的簡寫

1.進棧
bool push(sqdoublestack &s ,elemtype x,int stacknum)
順序棧儲存空間大小需要事先開闢好,利用率不高

棧滿條件,top1和top2相差1,top1+1 == top2

棧的鏈式儲存結構也叫鏈棧

棧鏈一般不存在棧滿,判空為top==null

typedef struct snode snode,*slink //鏈棧的結點

typedef struct linkstacklinkstack //鏈棧

1.進棧
bool push(linkstack *s, elemtype x)
2.出棧
bool pop(linkstack *s, elemtype&x)
佇列是只允許在一端插入,在另一端進行刪除的線性表

隊頭,隊尾

按照先進先出的原則

陣列實現佇列,對首放在陣列下標為0的位置

#define maxsize 50

typedef structsqqueue;

首尾相連的順序儲存的佇列,解決假溢位現象

入隊

rear = (rear + 1)%maxsize;
出隊

front = (front +1 )%maxsize;
判空

1.設定標誌flag,當flag = 0 時,或者rear = font時為空,

當flag = 1且rear等於front時,為滿

2. front = rear為空,保留乙個空餘單位,認為佇列滿了

(rear+1)%maxsize == front

而元素個數

(rear- front +maxsize)%maxsize

1.入隊

bool enqueue(sqqueue &q,elemtype x)
2.出隊
bool dequeue(sqqueue &q,elemtype &x)
線性表的單鏈表,只不過需要加點限制,只能表尾插入元素,表頭刪除元素。

為了方便操作,我們分別設定隊頭指標和隊尾指標,隊頭指標指向頭結點,隊尾指標指向尾結點。

typedef structlinknode;

typedef structlinkqueue;

1.入隊

只能從隊尾插入元素,隊頭刪除元素。於是入隊就是在隊尾指標進行插入結點操作。鏈隊的插入操作和單鏈表的插入操作是一致的。

void enqueue(linkqueue &q,elemtype x)
2.出隊

出隊就是頭結點的後繼結點出隊,然後將頭結點的後繼改為它後面的結點。

bool dequeue(linkqueue &q,elemtype &x)
允許兩端都可以入隊和出隊的佇列

(),{},.巢狀是任意的

演算法思想

若為左括號,入棧

若為右括號,出棧乙個左括號判斷是否匹配

檢查字元隊尾,檢查棧是否為空,只有空,字串才是括號匹配的

bool check(char *str )

斐波那契數列

0 1 1 2 3 5 8...

int fib (int n)

資料結構課程學習(2)

線性表是具有相同資料型別的n n 0 個資料元素的有限序列 表頭元素,表尾元素 除第乙個元素外,每個元素有且僅有乙個直接前驅 除最後乙個元素外,有且有乙個直接後驅 線性表的順序結構儲存是邏輯上相鄰,物理上相鄰 隨機儲存,時間複雜度為o 1 靜態建表 動態建表 起始位址 陣列名data 儲存容量 ma...

資料結構課程學習(4)

由二維陣列儲存矩陣 1.行有先 loc i,j loc 0,0 i h 1 j l 2.列有先 loc i,j loc 0,0 i h 1 j l 多個相同元素只分配乙個儲存空間,對零元素不分配儲存空間 對稱矩陣 n階方陣,a i,j a j,i i 1,j n 儲存到陣列b n n 1 2 中 儲...

資料結構課程總結

不知不覺,一學期就這樣過去,有遺憾也有收穫。當我懷揣著對新學科的憧憬,第一次上賀老師的課時,我發現資料結構不再是傳統的教學模式,而是採用翻轉課堂的方式,它是由賀老師推廣實施的,這是一次教學上的改革,我們很榮幸成為它的乙份子,追趕時代的新潮流。對於資料結構這門課來說,需要我們下很大的功夫在上面,它是基...