程式設計實現下面的棧頂操作:
[cpp]view plain
copy
print?
class mydata
;
解析:顯然這裡需要實現棧的3種基本操作,即進棧、出棧以及判空。為了方便起見,使用單鏈表結構實現棧並且使用類的形式來定義站內及其節點。首先是節點類和棧類的具體定義,程式**如下:
[cpp]view plain
copy
print?
#include
using
namespace std;
class mydata
//預設建構函式
mydata(int value) : data(value), next(null){} //帶引數的建構函式
int data; //資料域
mydata *next; //下乙個節點
};
class mystack
//預設建構函式
void push(mydata data); //進棧
void pop(mydata *pdata); //出棧
bool isempty(); //是否為空
mydata *top; //棧頂
};
由於不能直接操作棧底,因此這裡沒有定義棧底的指標。在mystack的預設夠找函式中,把棧頂指標top置空,表示此時棧為空棧。
接下來是進棧、出棧以及判空的**實現,程式**如下:
[cpp]view plain
copy
print?
void mystack::push(mydata data)
void mystack::pop(mydata *data)
data->data = top->data; //給傳出的引數賦值
mydata *p = top; //臨時儲存原棧頂節點
top = top->next; //移動棧頂,指向下乙個節點
delete p; //釋放原棧頂節點記憶體
} bool mystack::isempty()
mystack::push 函式表示進棧操作,它實際上就是在單鏈表的首部進行插入操作,並且top一直指向這個單鏈表的首部。
mystack::pop 函式表示出棧操作,它實際上就是在單鏈表的首部進行刪除操作,並且top一直指向這個單鏈表的首部,另外它還把刪除節點的資料儲存到data引數中。
mystack::isempty 函式非常簡單,當棧空時,top指標為null,而當棧中有節點時,top指向煉表頭,因此只需要用top與null進行比較即可。
下面是棧操作的測試**:
[cpp]view plain
copy
print?
int main()
執行結果為:
[cpp]view plain
copy
print?
pop 3
pop 2
pop 1
empty = 1
press any key to continue
python用單鏈表實現棧
class lnode 節點的類 def init self,x self.data x self.next none class mystack 用鍊錶實現棧 def init self self.data none self.next none 判斷棧是否為空 def isempty self ...
單鏈表實現佇列和棧
單鏈表實現佇列很簡單,因為佇列是先入先出fifo,所以入隊就是在單鏈表的頭插入資料,出隊就是在單鏈表的尾得到資料,然後刪除。佇列的介面 public inte ce queue介面實現 public class queueimpl implements queue override public i...
Python 單鏈表實現棧操作
單鏈表實現棧操作,規定棧頂在鍊錶的頭部 如下 coding utf 8 class linkedstack class node def init self,element,next self.element element self.next next 棧方法 def init self self...