1. 程式人生 > 其它 >資料結構之鏈棧

資料結構之鏈棧

(一)鏈棧

鏈棧是運算受限的單鏈表,只能在連結串列頭部進行操作

// 鏈棧的結點
typeof struck StackNode{
    SElemType data            // 鏈棧的資料域
    struck StackNode *next    // 鏈棧的指標域
}StackNode, *LinkStack

 鏈棧的頭指標指向棧頂的元素,和連結串列不一樣

(二)鏈棧的操作

1.鏈棧的初始化

void InitStack(LinkStack &S) {
    if(S = NULL) return OK
    else return FALSE
}

2.鏈棧的入棧

Status Push(LinkStact &S,SElemType e){
    p = new StackNode            // 生成新結點
    p->data = e                  // 將新結點資料域置為e
    p->next = next               // 將新結點插入棧頂
    S = p                        // 修改棧頂指標
    return OK
}

3.棧頂的出棧

Staus Pop(LinkStack &S,SElemType & e) {
    if(S == NULL) return ERROR
    e = S -> data        // 出棧的資料賦值給 出棧元素e
    p = S                // 賦值一個地址,方便後面銷燬此結點
    S = S -> next        // 將S指標移動到下一個結點
    delete p             // 銷燬結點
    return OK
}

4.取棧頂元素

SElemType GetTop(LinkStack S){
    if(S != NULL) return S ->data
}