棧的鏈式儲存結構

2021-05-22 05:01:10 字數 2053 閱讀 3569

棧的鏈式表示,即鏈棧。由於棧的操作是線性表操作的特例,因此鏈棧可以看成運算受限的單鏈表。其特點如下:

①鏈棧無棧滿問題,空間可擴充;

②插入和刪除僅在棧頂處執行;

③鏈式棧的棧頂在鏈頭;

④適合於多棧操作。

stacklist.h

#include

class listint

;
int data;
listint *link;
};
class stacklist
;
~stacklist();
bool isempty() const   //棧空返回1,否則返回0
void gettop(listint& x);               //獲得棧頂元素

bool push(const listint& x);           //元素x入棧

bool pop(listint& x);                  //元素出棧,並儲存在x中

bool pop();                            //元素出棧

void clearstack();                     //清除棧中所有元素

void output();                         //輸出棧元素

private:

listint *top;                         //指向棧頂的結點
};
stacklist.cpp

#include 

#include 

"stacklist.h"

using namespace std;

stacklist::~stacklist()
}
void stacklist::gettop(listint& x)
x = *top->link;
}
bool stacklist::push(const listint &x)
bool stacklist::pop(listint &x)
x = *top;
top = x.link;
return true;
}
bool stacklist::pop()
listint *x;
x = top;
top = x->link;
delete x;
return true;
}
void stacklist::output()
while(next)
cout
top = 0;
}

#include 

#include 

"stacklist.h"

using namespace std;

int main()
執行結果:

棧 鏈式儲存結構

講完了棧的順序儲存結構,現在來看棧的鏈式儲存結構,簡稱為鏈棧。想想看,棧只是棧頂來做插入和刪除操作,棧頂放在鍊錶的頭部還是尾部?由於單鏈表有頭指標,而棧頂指標也是必須的,所以比較好的辦法是把棧頂放在單鏈表的頭部。都已經有了棧頂在頭部了,單鏈表中常用的頭結點也就失去了意義,通常對於鏈棧來說,是不需要頭...

棧(鏈式儲存結構)

通常由乙個一維陣列和乙個棧頂元素變數組成 如下 define maxsize struct stacknode struct stacknode createstack void push struct stacknode s,elementtype x elementtype pop struct...

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...