數據結構與算法之棧的鏈式存儲結構

1、棧的鏈式存儲結構指針

      1.棧的鏈式存儲結構code

  • 棧的鏈式存儲結構,簡稱爲棧鏈(一般咱們使用的都是棧的順序存儲結構,鏈式存儲瞭解便可);
  • 棧由於只是棧頂來作插入和刪除操做,因此比較好的方法就是將棧頂放在單鏈表的頭部,棧頂指針和單鏈表的頭指針合二爲一。

     

      代碼實現:blog

typedef struct StackNode{
    ElemType data; // 存放棧的數據
    struct StackNode *next;
}StackNode, *LinkStack;

typedef struct LinkStack{
    LinkStackPrt top; // top指針
    int count; // 棧元素計數器
}

      2.進棧操做變量

      對於棧鏈的Push操做,假設元素值爲e的新結點是s,top爲棧頂指針,咱們獲得以下代碼:方法

Status Push(LinkStack *s, ElemType e){
    LinkStackPtr p = (LinkStackPtr) malloc(sizeof(StackNode));

    p->data = e; // 將要入棧的新結點e賦給p的數據域
    p->next = s->top; // 將p的next指向top
    s->top = p; // 而後將p賦給top
    s->count++; // 棧元素個數加1
    return OK;
}

      3.出棧操做im

      Pop操做,假設變量p用來存儲要刪除的棧頂結點,將棧頂指針下移移位,最後釋放p便可鏈表

Status Pop(LinkStack *s, ElemType e){
    LinkStackPtr p;
    if(StackEmpty(*s)){
        return ERROR;
    }
    *e = s->top->data;
    p = s->top;
    s->top = s->top->next;
    free(p);
    s->count--;
    return OK;
}

 

本文爲原創文章,若是對你有一點點的幫助,別忘了點贊哦!比心!如需轉載,請註明出處,謝謝!next

相關文章
相關標籤/搜索