1. 程式人生 > >鏈棧的資料結構以及鏈棧的實現

鏈棧的資料結構以及鏈棧的實現

線性表有順序儲存結構和鏈式儲存結構,棧屬於線性表的一種,也具有順序儲存結構和鏈式儲存結構。對於棧的鏈式儲存結構,一般稱之為鏈棧

棧的插入和刪除只在棧頂進行操作,在單鏈表中,頭指標是單鏈表的必須元素;而在棧中,棧頂指標也是鏈棧的必須元素,且一般將棧頂放在單鏈表的頭部。

鏈棧的結構程式碼如下所示:

//定義資料結點型別
//typedef 定義結構類型別名
//LinkStaclPtr指向結構的指標
typedef struct Node{
    int data;
    Node *next;
} StackNode,*LinkStackPtr;

//定義鏈棧的結構型別
typedef struct
LinkStack{ LinkStackPtr top;//棧頂指標 int count=0; } LinkStack;

入棧操作:

int push(LinkStack *S,int element){
    LinkStackPtr s=new Node;
    s->data=element;
    s->next=S->top;
    S->top=s;
    S->count++;
    return element;
}

出棧操作:

int pop(LinkStack *S){
    int temp;
    LinkStackPtr
p; if (S->count<=0){ cout<<"棧空"<<" "; } temp=S->top->data; p=S->top; S->top=S->top->next; delete p; S->count--; return temp; }

測試程式碼如下:

int main()
{
    LinkStack linkStack;
    cout << "入棧10個元素" << endl;
    for
(auto i = 0; i < 10; i++) { std::cout << push(&linkStack, i) << " "; } cout << "\n"; cout << "---分隔符---" << endl; cout << "出棧15個元素" << endl; for (auto i = 0; i < 15; i++) { cout << pop(&linkStack) << " "; } cout << "\n"; return 0; }

輸出如下:

鏈棧

歡迎關注公眾號,分享一些Unity3D、C#、C++資料結構和演算法的相關學習知識。

碼碼小蟲