鏈式棧與迴圈佇列

2021-08-19 20:08:37 字數 2602 閱讀 5786

鏈式棧是一種資料儲存結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在於它能夠克服用陣列實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指標空間用來存放指標域。

鏈式棧的定義及其基本操作:

package practice;

/*入棧使用頭結點

* 出棧只用刪除head.next

* * */

class linkstack1

public

entry(int data)

}private entry head = null; //頭結點的定義

public

linkstack1()

//入棧--->頭插法

public

void

inserthead(int val)

//出棧--->出頭結點的下乙個

public

void

pop()

this.head.next = cur.next;

cur = null; //出棧元素制空

return;

}//得到棧頂元素

public

intgettop()

return cur.data;

}//show

public

void

show()

system.out.println();

}}public

class linkstack

system.out.print("入棧後棧內元素:");

t1.show();

system.out.print("出棧後棧內元素:");

t1.pop();

t1.show();

system.out.println("棧頂元素為:"+t1.gettop());}}

執行結果:

迴圈佇列為充分利用向量空間,克服」假溢位」現象的方法是:將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列。

迴圈佇列的定義及其基本操作:

package practice;

/* * 迴圈佇列

* 先進先出

* 迴圈佇列中,由於入隊時尾指標向前追趕頭指標;出隊時頭指標向前追趕尾指標,

* 造成隊空和隊滿時頭尾指標均相等。因此,無法通過條件front==rear來判別佇列是"空"還是"滿"。

* 浪費乙個資料單元 來判斷是否為滿

* * */

class queuelink

public

queuelink(int size)

//判斷是否為滿

public boolean isfull()

return

false;

}//判斷是否為空

public boolean isempty()

//入隊

public

void

push(int val)

this.elem[this.rear] = val;

this.rear = (this.rear+1)%this.allsize;//用取餘運算使rear指向空間的下乙個位置

this.usesize++;

}//出隊

public

void

pop()

this.elem[this.front] = -1;//出隊位置的值置為-1

this.front = (this.front+1)%this.allsize;

this.usesize--;

}//得到隊頭元素

public

intgettop()

return

this.elem[this.front];

}//show

public

void

show()

system.out.println();

}}public

class testcqdemo

system.out.println("判斷迴圈佇列是否已滿:"+q1.isfull());

system.out.print("迴圈入隊後佇列內元素:");

q1.show();

system.out.print("出隊後佇列內元素:");

q1.pop();

q1.show();

system.out.println("隊頭元素為:"+q1.gettop());}}

執行結果:

鏈式棧 鏈式佇列 順序佇列

暑期學習第一天,學習了鏈式棧 鏈式佇列和順序佇列 這三種都是舉一反三的型別 鏈式棧標頭檔案 ifndef stack h define stack h define ok 0 define error 1 結點 typedef struct stacknode stacknode 棧 typedef...

鏈式迴圈佇列

假設以帶頭點的迴圈鍊錶表示佇列,鍊錶長度為n,只設乙個指標指向隊尾元素節點,不設頭指標,試編寫相應的佇列初始化 入隊和出隊的演算法 實現要求 1 輸入迴圈鍊錶長度n 2 入隊m個元素 3 列印佇列中所有元素 4 出隊k個元素 5 列印佇列中的元素 6 銷毀佇列。輸入 8 61 2 3 4 5 6 3...

迴圈順序佇列與鏈式佇列實現

佇列是一種先進先出的資料結構,分順序儲存結構和鏈式儲存結構兩種。順序儲存結構中廣泛使用的是迴圈佇列,也是佇列使用中最多的一種。下面將分別實現這兩種佇列的基本操作。includeusing namespace std const int maxsize 100 class queue int isem...