首页 > 其他分享 >链栈

链栈

时间:2022-10-04 16:11:25浏览次数:35  
标签:LinkStack temp LinkStackNode top next 链栈

链栈

采用链表作为储存结构实现的栈称为链栈

1.初始化链栈

1.1链栈的结构

typedef struct LinkStackNode {
    ElemType data;
    struct LinkStackNode *next;
}LinkStackNode,* LinkStack;

1.2定义一个空栈

void InitStack(LinkStack& S)
{
    S = (LinkStack)malloc(sizeof(LinkStackNode));
    S->next = NULL;
}

2.入栈

2.1算法思想

  1. 利用栈的特性 先进后出,后入先出的特性,使用尾插法入栈

  2. 头指针即为top指针

2.2算法设计

void Push1(LinkStack &top,ElemType e)
{
    LinkStack  temp = (LinkStack)malloc(sizeof(LinkStackNode));
    temp->data = e;
    temp->next = top->next;
    top->next = temp;
}

3.出栈

3.1算法思想

  1. 判断栈是否为空,判断条件为头指针为空

  2. 为了方便操作,创建一个p结点,将首元结点(也就是栈顶)赋值于p

  3. 让top指针指向p的后继结点

  4. 释放p

3.2算法设计

bool Pop(LinkStack& top)
{
    if (top->next = NULL) 
    {
        return false;
    }
    LinkStack p = top->next;
    top->next = p->next;
    free(p);
    return true;
}
 

 

标签:LinkStack,temp,LinkStackNode,top,next,链栈
From: https://www.cnblogs.com/wlb429/p/16753915.html

相关文章

  • C语言实现顺序栈、单链栈、双向链栈
    #defineMaxlength8/***数据结构类型:顺序栈*插入方法:尾插法*是否有头节点:否*说明:在主函数直接定义一个结构体节点,取地址作形参,避免使用malloc函数而考虑二......