第三章學習小結

2022-10-10 18:24:10 字數 1843 閱讀 2919

.第三章學習了棧和佇列,有了第二章對線性表的學習,已經了解學習的乙個思維過程,在這裡分享一下。例如學習棧,首先要了解它的訪問特點,然後是學習它的adt,然後從具體的方面學習,分別從兩種不同的儲存結構來**它具體操作的實現。這個是整個資料結構學習的基本思路,掌握了思路,我覺得對於理清楚整一本書很有幫助。

2.在對於棧的學習,課本上給出的案例是括號匹配問題,還有簡單的四則運算,在解決這兩個問題的時候,要考慮到資料是先進後出,才想到採用棧結構。並且在打**之前,一定要加以詳細的注釋,通常會有一些很小的bug,看了老半天看不出來。解題先用文字大概將演算法寫出來,再慢慢完善演算法裡所欠缺的。

3.對於佇列的學習,個人覺得較為重要的一點是要對佇列是否帶頭節點來操作,認真分析,這樣能夠對整個佇列掌握得更透徹,這裡分享一下老師的**

鏈式佇列的實現:

一、型別定義

typedef struct nodelnode;

typedef structlinkqueue;

二、各種操作的實現分析

1、初始化

linkqueue q;

不帶頭:q.front = null; q.rear = null;

帶頭:q.front = new lnode; q.front->next = null; q.rear = q.front;

2、判斷隊空

不帶頭:q.front==null 或者:q.rear==null

帶頭:q.front->next==null 或者:q.front==q.rear

3、判斷隊滿()//由new申請空間後判斷,故無需定義該函式

4、在隊頭入隊

不帶頭空佇列:p = new lnode;

cin >> p->data;

p->next = null;

q.rear = p; 

q.front = q.rear; //本情況獨有

不帶頭1個結點:p = new lnode;

cin >> p->data;

p->next = null;

q.rear->next = p; //本情況獨有

q.rear = p;

不帶頭2個結點://同上

帶頭空佇列:p = new lnode;

cin >> p->data;

p->next = null;

q.rear->next = p;

q.rear = p;

帶頭1個結點://同上

帶頭2個結點://同上

5、在隊頭出隊

不帶頭1個結點:p = q.front;

q.front = q.front->next;被賦值為null

e = p->data;

delete p;

q.rear = null; //本情況獨有,將rear恢復到初始狀態

不帶頭2個結點:p = q.front;

q.front = q.front->next;

e = p->data;

delete p;

帶頭1個結點:p = q.front->next;

e = p->data;

q.front->next = p->next;

delete p;

q.rear = q.front; //本情況獨有,將rear恢復到初始狀態

//上面語句的執行條件:空對列

帶頭2個結點:p = q.front->next;

q.front->next = p->next; ->next被賦值為null

e = p->data;

delete p;

4.遇到問題都是一些很細微的問題,例如對string的用法不太了解,在定義陣列的陣列的時候,要輸入變數值才能定義

第三章小結

第三章學習了棧和佇列。棧,後進先出 lifo 只在棧頂 top 進行操作 佇列,先進先出 fifo 在隊頭 front 進行刪除,在隊尾 rear 進行入隊。其儲存結構的定義則可對照上一章的順序表及鍊錶的定義,知識的串接及對知識的靈活應用,讓學習變得容易些。在完成作業的過程中,發現要解決它必須多方面...

3 5 第三章小結

3.5 第三章小結 在這一章,我們通過實踐 了基本的函式結構和技術。首先,用 let 繫結宣告值和函式,知道了 f 能夠使必須的概念數量最小化,從嚴謹的數學觀點來看,不可變值就是不帶引數的函式。接下來,我們討論了函式語言中最簡單的不可變資料結構 元組,演示了不可變資料結構的用法。用不可變資料結構進行...

DS第三章小結

一 你對本章內容的小結 本章主要講了兩種特殊的線性表,棧和佇列。棧是僅在表尾進行插入或刪除操作且後進先出 lifo 的線性表,而佇列則是在表的一端插入,另一端刪除元素且先進先出 fifo 的線性表。同時,課本的案例引入告訴我們,棧可以解決數值的轉換,括號匹配的檢驗問題 而佇列因其結構的吻合可以用了舞...