棧和佇列考點

2021-08-09 10:15:50 字數 2864 閱讀 4784

棧(stack ;a pile of things)

只能在一端插入刪除;

「先進先出」「操作受限的線性表」

初始化(順序儲存):

int stack[maxsize];

int top = -1;

入棧:stack[++top] = e;

出棧:stack[top–] =e;

棧空:top == -1;

棧滿:top == maxsize - 1;

鏈棧:

初始化:

lnode* head = (lnode*)malloc(sizeof(lnode));

head->next = null;

lnode* top = null;

入棧:

top = (lnode*)malloc(sizeof(lnode));//top始終指向新插入的節點;

top->next = null;

top->data = 『a』;

top->next = head ->next;//頭插法;

head->next = top;

出棧:

x = top->data;

head->next = top->next;

free(top);

top = head->next;

棧滿:

考研中沒有棧滿;(記憶體無限大);

占空:

head->next == null;

佇列(the queue)

定義:只能在一端插入,另一端刪除;(先進先出的邏輯特性)

順序隊:

int queue[maxsize];

int front=0, rear=0;

入隊:

queue[++rear] = e;

出隊:

x = queue[++front];(元素殘留在佇列中)

……假溢位;

環狀佇列

入隊:rear = (rear+1)%maxsize;

queue[rear]=x;

出隊:front = (front+1)%maxsize;

x = queue[front];

隊空:

front = rear;

隊滿:

front = (rear+1)%maxsize;

鏈隊:

初始化:

入隊:

出隊:考點(非**)

考點1:由出棧序列判斷棧容量;(選擇題)

結論:若入:1,2, 3則無3,1,2;

卡特蘭數(catalan number):

cn = (2n)!/[(n+1)!n!] = 輸出序列的個數(n為入棧元素個數)

考點2:表示式轉換

中前字尾表示式:a+b/+ab/ab+

要會互相轉換

二叉樹轉換法

括號轉換法

考點3:棧用於求前中字尾表示式的值;

考點4:佇列的配置問題

1:計算元素的個數

(rear-front+maxsize)%maxsize = num;

非正常配置問題

第一種:front指向第乙個元素

rear指向最後乙個元素的後一位;

1:計算個數公式一樣,只是入隊出隊次序不同;

第二種:front指向第乙個元素,rear指向最後乙個元素;

隊空:front = (rear+1)%maxsize;

隊滿:front = (rear+2)%maxsize;

計算元素個數

=(rear-front+1+maxsize)%maxsize;

考點4:佇列擴充套件—雙端佇列

輸入/輸出受限的雙端佇列;考入隊出隊的次序問題;

考點5:棧的擴充套件

共享棧:共享同一塊儲存單元;

實現: int stack[maxsize];

int top1 = -1; top2 = maxsize;

(int top[2] = ;)//將兩個指標存在陣列裡

棧滿:top[0] +1 == top[1];

用棧來模擬佇列:(兩個同大小的棧)

入隊規則:

**若s1不空,則元素直接入s1;

**若s1滿,s2空,則將元素一次性移入s2;之後在入s1;

出隊規則:

**若s2不空,則從s2直接出棧;

**若s2空,則將s1元素入s2,然後在從s2出棧;

隊滿:s1滿且s2不空 ;

對空;s1空且s2空;

考點2(**部分)

利用棧求字尾表示式的值:從左向右掃瞄,遇到運算子就運算

棧求字首表示式:從右向左掃瞄,遇到運算子就計算

中綴表示式轉字尾表示式

中綴表示式轉字首表示式

括號匹配問題!

棧的計算

佇列與棧 知識點 面試考點

先進先出 一種操作受限的線性表資料結構 支援隊尾插入元素,在隊頭刪除元素。佇列的應用也非常廣泛如 迴圈佇列 阻塞佇列 併發佇列 優先順序佇列等。假越界只能使用一次 棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。後進先出 中綴表示式就是常見的運算表示式,如...

棧和佇列 單調佇列 單調棧

講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...

棧和佇列 佇列

佇列 又一種特殊的線性表 佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 允許刪除的一端稱為隊頭 front 允許插入的一端稱為隊尾 rear 當佇列中沒有元素時稱為空佇列。佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾 即不允許 加塞 每次離開的成員總是...