首页 > 其他分享 >3.5 链栈的表示和实现

3.5 链栈的表示和实现

时间:2023-03-18 21:24:50浏览次数:40  
标签:LinkStack return 实现 栈顶 链栈 算法 3.5 StackNode

链栈的表示

  • 链栈是运算受限的单链表,只能在链表头部进行操作

    typedef struct StackNode{
     	SElemType data;
      Struct StackNode *next;
    }StackNode,*LinkStack;
    
    LinkStack S;
    

    我们是在头部进行操作,类似与头插法,也就是说我们将S指向栈顶元素。

  1. 链表的头指针就是栈顶
  2. 不需要头结点
  3. 基本不存在站栈满的情况
  4. 空栈相当于头指针指向空
  5. 插入和删除仅在栈顶处执行

链栈的初始化

  • 【算法描述】

    void InitStack(LinkStack &S){
      	// 构造一个空栈,栈顶指针置为空
      	S=null;
      	return OK;
    }
    

判断链栈是否为空

  • 【算法描述】

    Status StackEmpty(LinkStack S){
      	if(S==null)
          	return TRUE;
      	else 
          	return FALSE;
    }
    

链栈的入栈

  • 【算法思想】将元素压入栈中

  • 【算法步骤】
    1、开辟一个新的空间,然后将数据域进行赋值
    2、将新节点的指针域指向头结点
    3、将S指向新节点即可。

  • 【算法描述】

    Status  Push(LinkStack &S,SElemType &e){
      	StackNode p=new StackNode();
      	p->data=e;
      	p->next=S;
      	S=p;
      	return OK;
    }
    

链栈的出栈

  • 【算法思想】将栈顶元素进行出栈

  • 【算法步骤】
    1、将栈顶赋值给参数e,进行返回
    2、将S指向下一个节点
    3、将空节点进行删除

  • 【算法描述】

    Status Pop(LinkStack &S,SElemType &e){
      	// 首先是要判断栈是否为空
      	if(S==null)
          	return ERROR;
      	StackNode p=S;
      	e=S->data;
      	S=S->next;
      	delete p;
      	return OK;
    }
    

取栈顶元素的值

  • 【算法思想】取出栈顶元素的值

  • 【算法描述】

    SElemType GetTop(LinkStack S){
      	if(!S){
          return S->data;
        }
      	return null;
    }
    

标签:LinkStack,return,实现,栈顶,链栈,算法,3.5,StackNode
From: https://www.cnblogs.com/wangjunxiang/p/17231778.html

相关文章

  • 3.7 队列的表示和实现
    3.5队列的表示和操作实现相关术语队列(Queue)是仅在表尾进行插入操作,在表头进行删除操作的线性表。表尾及a(((((n)))))端,称为队尾;表头即a(((((1)))))端称为......
  • 3.8 队列的顺序表示和实现
    3.5.2队列的顺序表示和实现队列的物理存储可以用顺序结构,也可用链式存储结构,相应地队列的存储方式也分为两种,即顺序队列和链式队列、队列的顺序表示——————......
  • 3.9 队列的链式表示和实现
    3.5.3队列的链式表示和实现适用于用户无法估计所用队列的长度,则适宜采用该类型的队列链式队列的结构图如下所示链队列的类型定义//这里是定义是每个节点类型t......
  • 3.3 栈的表示和实现
    1、栈的抽象数据类型定义ADTStack{ 数据对象: D={ai|ai∈ElemSet,i=1,2,3,...,n。n>=0} 数据关系: R1={<ai-ai>|ai-1andai∈D,i=2,...,n} 约定an端为栈顶,a......
  • 3.4 顺序栈的表示和实现
    由于栈本身就是线性表,于是栈也有顺序存储和链式存储两种实现方式栈的顺序存储——顺序栈栈的链式存储——链栈顺序栈的表示和实现存储方式:同一般线性表的顺序存......
  • RHEL 7配置HAProxy实现Web负载均衡
    本文将简单介绍使用HAProxy实现web负载均衡,主要内容包括基于权重的轮询、为HAProxy配置https、配置http重定向为https、配置HAProxy使用独立日志。一、测试环境HAProxy:......
  • Vue实现图片点击隐藏效果
    前言:组件作为Vue.js最强大的功能之一,因其封装可复用的代码方便程序员调用和可根据需求对组件进行个性化开发而深受广大前端程序员的喜爱。组件化的开发大大提升了代码的复......
  • react方式实现rate组件
    看到网上写的rate组件,要么是react的class方式,要么就是基于classNameList的增删改查,总感觉不太完美,于是趁周末自己撸了一个,可以直接拿到自己的页面去试,喜欢请点个赞哦需求......
  • webpack原理(1):Webpack热更新实现原理代码分析
    热更新,主要就是把前端工程文件变更,即时编译,然后通知到浏览器端,刷新代码。服务单与客户端通信方式有:ajax轮询,EventSource、websockt。客户端刷新一般分为两种:整体页面刷新,......
  • React 实现 动态加载组件
    React实现动态加载组件import{Button}from'antd'importReact,{useState,lazy,Suspense}from'react'//这个地方动态加载组件constItem=lazy(()=>i......