美文网首页
堆栈(Stack)---链表实现

堆栈(Stack)---链表实现

作者: 日常表白结衣 | 来源:发表于2017-07-26 23:33 被阅读0次

栈的链式存储结构实际上就是一个单链表,叫做链栈。插入和删除操作只能在链栈的栈顶进行。

/* 定义链栈 */
typedef struct SNode * Stack;
struct SNode{
    ElementType Data;
    struct SNode *Next;
};
/* 堆栈初始化、建立空栈 */
Stack CreateStack()
{
    /* 建立一个堆栈的头节点,返回指针 */
    Stack S;
    S = (Stack)malloc(sizeof(struct SNode));
    S->Next=NULL;
    return S;
}
/* 判断栈是否为空 */
int IsEmpty(Stack S)
{
    /* 空返回1,否则返回0 */
    return(S->Next == NULL);
}
/* Push 入栈 元素item压入堆栈S */
void Push(ElementType item,Stack S)
{
    struct SNode * TmpCell;
    TmpCell=(struct SNode * )malloc(sizeof(struct SNode));
    TmpCell->Element =item;
    TmpCell->Next=S->Next;
    S->next=TmpCell;
}
/*Pop 出栈 删除并返回堆栈S的栈顶元素*/
ElementType Pop(Stack S)
{
    struct SNode * FirstCell;   //指向栈顶元素
    ElementType TopElem;    //栈顶元素
    if(IsEmpty(S)){
        printf("the Stack empty");  return NULL;
    }else{
        FirstCell = S->Next;
        S->Next = FirstCell->Next;
        TopElem=FirstCell->Element;
        free(FirstCell);
        return TopElem;
    }
}

相关文章

  • 堆栈(Stack)---链表实现

    栈的链式存储结构实际上就是一个单链表,叫做链栈。插入和删除操作只能在链栈的栈顶进行。

  • 三种常见的计算模型

    堆栈机 堆栈机,全称为“堆栈结构机器”,即英文的 “Stack Machine”。基于堆栈机模型实现的计算机,无论...

  • 堆栈(Stack)---数组实现

    【后缀表达式】运算符号位于两个运算数之后,如,abc+de/- [a+bc-d/e]求值策略:从左向右扫描,逐个处...

  • 数据结构(二)——堆栈

    栈(stack)又名堆栈,它是一种运算受限的线性表。 栈分为两种——线性栈和链表栈,下面分别用两个算法题实现这两种...

  • java集合框架

    tips: Stack继承自Vector,实现一个后进先出的堆栈。Hashtable实现了Map接口。Proper...

  • 数据结构——Golang实现堆栈

    转载请注明出处数据结构——Golang实现堆栈 1. 栈(stack) 栈(stack)在计算机科学中是限定仅在表...

  • 下压堆栈(链表实现)

    堆栈的实现

  • 下压堆栈(链表实现)

    该栈用链表实现,并是泛型的、可迭代的栈。参考于算法(第四版)的算法1.2下面是java代码: 测试结果: 附上自定...

  • 链表 java实现

    链表java实现:因为面试/考试真的很喜欢考链表!!! 题目一:从尾到头打印链表思路:利用stack【判断栈是否为...

  • 0225. Implement Stack using Queu

    *LeetCode 225. Implement Stack using Queues用队列来实现链表,对于C语...

网友评论

      本文标题:堆栈(Stack)---链表实现

      本文链接:https://www.haomeiwen.com/subject/cwookxtx.html