棧:限定僅在表尾進行插入和刪除操作的線性表。
允許插入和刪除的一端稱為棧頂,另一端稱為棧底。
設指標top指示棧頂元素在陣列中的位置。 進棧:top加1 出棧:top減1 棧空:top= -1 棧滿:top= max_size-1
順序棧類的宣告 :
const int max_size=100;
template class seqstack
順序棧的實現——入棧:
template void seqstack::push ( t x)
順序棧的實現——取棧頂:
template t seqstack::gettop ( )
順序棧的實現——出棧:
template t seqstack:: pop ( )
兩棧共享空間
兩棧共享空間:棧1的底固定在下標為0的一端;
棧2的底固定在下標為stacksize-1的一端。
top1和top2分別為棧1和棧2的棧頂指標;
stack_size為整個陣列空間的大小(圖中用s表示);
什麼時候棧1為空? top1= -1
什麼時候棧2為空? top2= stack_size
兩棧共享空間類的宣告:
const int stack_size=100;
template class bothstack
;
兩棧共享空間的實現——插入:
1. 如果棧滿,則丟擲上溢異常;
2. 判斷是插在棧1還是棧2;
2.1 若在棧1插入,則
2.1.1 top1加1;
2.1.2 在top1處填入x;
2.2 若在棧2插入,則
2.2.1 top2減1;
2.2.2 在top2處填入x;
template void bothstack::push(int i, t x )
兩棧共享空間的實現——刪除
template t bothstack::pop(int i)
if (i==2)
}
取某個棧棧頂的演算法:
template t bothstack::gettop(int i)
if(i==2)
}
鏈 棧 的 類 聲 明:
template class linkstack
; ~linkstack( );
void push(t x);
t pop( );
t gettop( );
bool empty( );
private:
node*top;
}
鏈棧的實現——插入(入棧):
template void linkstack::push(t x)
鏈棧的實現——刪除(出棧):
template t linkstack::pop( )
鏈棧的實現——鏈棧的析構(鏈棧的銷毀):
template linkstack::~linkstack( )
}
佇列
佇列:只允許在一端進行插入操作,而另一端進行刪除操作的線性表。
允許插入(也稱入隊、進隊)的一端稱為隊尾,允許刪除(也稱出隊)的一端稱為隊頭。
佇列的操作特性:先進先出
迴圈時:rear=(rear+1)% maxsize front=(front+1) % mazsize
隊滿的條件:(rear+1) mod queuesize==front
循 環 隊 列 類 的 聲 明:
const int queuesize=100;
template class cirqueue;
private:
t data[queuesize];
int front, rear;
};
迴圈佇列的實現——入隊:
template void cirqueue::enqueue(t x)
迴圈佇列的實現——出隊:
template t cirqueue::dequeue( )
迴圈佇列的實現——讀隊頭元素:
template t cirqueue::getqueue( )
迴圈佇列的實現——佇列長度:
template int cirqueue::getlength( )
鏈 隊 列 類 的 聲 明:
template class linkqueue
;
鏈佇列的實現——建構函式:
template linkqueue::linkqueue( )
鏈佇列的實現——入隊:
template void linkqueue::enqueue(t x)
鏈佇列的實現——出隊:
template t linkqueue::dequeue( )
資料結構筆記 第三章棧和佇列
棧 限制插入 刪除資料的位置 3.2.1 1.棧的定義 棧是只能在表的一端進行插入刪除操作的線性表,允許插入 入棧 和刪除 出棧 的一端稱為棧頂,另一端稱為棧底,不含有任何資料元素的棧稱為空棧。後進先出,即任何時刻出棧的元素都只能是棧頂元素。設定指示器,記錄棧頂位置。2.棧的抽象資料型別定義 sta...
資料結構第三章棧和佇列
第四章 棧和佇列 1.棧 限定僅在表尾進行插入或刪除操作的線性表,表尾端稱為棧頂,表頭端稱為棧底。棧頂移動,棧底固定。特點 先進後出 後進先出 typedef struct sqstack status push sqstack s,selemtype e status pop sqstack s,...
資料結構 第三章 棧和佇列
目錄 3.1 堆疊的基本概念 3.2 堆疊的順序儲存結構 一 構造原理 二 實現 三.多棧共享連續空間問題 3.3 堆疊的鏈式儲存結構 一.構造原理 二 實現 3.4 佇列的基本概念 3.5佇列的順序儲存結構 一.構造原理 二 實現 三.迴圈佇列 3.5 佇列的鏈式儲存結構 一.構造原理 二 實現 ...