链栈的进栈push和出栈pop操作都很简单,没有任何循环操作,时间复杂度均为O(1)。
    对于链栈的进栈push操作,假设元素值为e的新结点是s,top为栈顶指针,示意图如图4-6-2所示代码如下。类似于头插
    image.png
    图4-6-2

    1. /* 插入元素e为新的栈顶元素 */
    2. Status Push(LinkStack *L, SElemType e)
    3. {
    4. //新要插入的结点指针
    5. LinkStackPtr s = (LinkStackPtr)malloc(sizeof(StackNode));
    6. s->data = e;
    7. /* 把当前的栈顶元素赋值给新结点的直接后继,如图中① */
    8. s->next = L->top;//新结点指向原栈顶指针
    9. /* 将新的结点s赋值给栈顶指针,如图中② */
    10. L->top = s;//原栈顶指针指向新结点,上移变成现栈顶结点
    11. L->count++;
    12. return OK;
    13. }