資料結構 棧和佇列常見演算法問題

2021-10-24 16:17:43 字數 1732 閱讀 9105

演算法和問題來自於試卷,輔導書,以及網路。

// 資料結構

typedef struct sqstack;

```//順序棧

typedef struct squeue;

分析:略

bool func

(char s)

n++;}

if(i!=k)

return0;

else

return1;

}

分析:略

typedef struct lnodelnode,

*linklist

bool func

(linklist l

,int n)

if(n%2==

1)//若表長為奇數

p=p-

>next;

while

(p!=

null

&&stack[top]

==p-

>data)

if(top!=-1

)return0;

else

return1;

}

分析:棧頂相向,意味著兩個棧的棧底分別是0和maxsize,入棧和出棧要判斷是否為空或者是否是滿的,注意棧滿條件。

typedef structsqds;

s1入棧

int push1

(sqds &s,int e)

s1出棧

int pop1

(sqds s,int &e)

s2入棧

int push2

(sqds &s,int e)

s1出棧

int pop2

(sqds s,int &e)

分析:假設入隊操作使指標變為1,出隊操作使其變為0

typedef structsqqueue;

入隊int inqueue

(sqqueue &s,int e)}出隊

int dequeue

(sqqueue &s,int &e)

}

分析:假設入隊操作使指標變為1,出隊操作使其變為0

int reverseq

(sqqueue &q, sqstack &s)

while(!

isempty

(s))

}//判空函式,入隊出隊,入棧出棧具體操作細節略

分析:假設入隊操作使指標變為1,出隊操作使其變為0

int enqueue

(sqstack &s1, sqstack &s2,int elem)

push

(s1,elem)

; return1;

}else

//s1不滿直接入隊

push

(s1,elem)

;return1;

}int dequeue

(sqstack &s1, sqstack &s2,int &elem)

elem=

pop(s2,e)

;return elem;}}

bool queueempty

(sqstack &s1, sqstack &s2)

資料結構棧 佇列演算法

cpp view plain copy include include include include include 兩個棧實現佇列 using namespace std template class queue int size bool empty void push t value t f...

資料結構與演算法 棧和佇列

棧 是限制在表的一端進行插入和刪除運算的線性表。棧又稱後進先出簡稱lifo表 佇列 也是一種運算受限的線性表。它只允許在標的一端進行插入,而在另一端進行刪除。佇列亦稱先進先出fifo表 1.棧與佇列的區別 1 佇列先進先出,棧先進後出。2 對插入和刪除操作的 限定 棧是限定只能在表的一端進行插入和刪...

資料結構與演算法 棧和佇列

棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,它的特點在於只能允許在容器的一端 稱為棧頂端指標,英語 top 進行加入資料 英語 push 和輸出資料 英語 pop 的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設...