C语言链栈与顺序栈的实现

2023-05-16

C语言链栈与顺序栈的实现

顺序栈

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 10
typedef int DataType;
typedef struct {
    DataType buf[MAX];
    DataType top;

}SeqStack;
SeqStack *create_empty_stack(){
    SeqStack *stack = NULL;
    stack = (SeqStack *)malloc(sizeof(SeqStack));
    if(stack == NULL){
        printf("faild to malloc");
        return NULL;
    }
    memset(stack,0,sizeof(stack));
    return stack;
}
void init_seqstack(SeqStack *stack){
    stack->top = 0;
}
int is_empty(SeqStack *stack){
    if(stack->top = -1){
        return 0;
    }
    return 1;
}
void push(SeqStack *stack,DataType data){
    
    stack->buf[stack->top] = data;
    stack->top++;
}
void pop(SeqStack *stack){
    stack->top--;
}
int main(int argc, char const *argv[])
{
    SeqStack *p = create_empty_stack();
    push(p,1);
    push(p,2);
    push(p,3);
    pop(p);
    return 0;
}

链栈

要注意的是push的时候需要传入二级指针top

#include <stdio.h>
#include <stdlib.h>
typedef int DataType;
typedef struct node
{
    DataType data;
    struct node *next;

} LinkStack;
LinkStack *create_empty_linkstack()
{
    LinkStack *top = NULL;
    top = (LinkStack *)malloc(sizeof(LinkStack));
    if (top == NULL)
    {
        printf("faild to malloc LinkStack\n");
        return NULL;
    }
    top->next = NULL;
    return top;
}
int is_empty(LinkStack *top)
{
    if(top->next == NULL){
        printf("linkstack is empty\n");
    }
    return top->next == NULL ? 0 : 1;
}
LinkStack *push(LinkStack **top, DataType data)
{
    LinkStack *newnode = NULL;
    newnode = (LinkStack *)malloc(sizeof(LinkStack));
    if (newnode == NULL)
    {
        printf("faild to malloc LinkStack\n");
    }
    newnode->data = data;
    newnode->next = *top;
    *top = newnode;
    //return top;
}
void pop(LinkStack *top){
    if(!is_empty(top)){
        printf("linkstack is empty\n");
        exit(EXIT_FAILURE);
    }
    top = top->next;
}
int getTop(LinkStack *top){
    is_empty(top);
    return top->data;
    
}
int main(int argc, char const *argv[])
{
    LinkStack *top = create_empty_linkstack();
    
    push(&top,2);
    push(&top,8);
    push(&top,6);
    is_empty(top);
    printf("top value:%d\n",getTop(top));
    return 0;
}

输出结果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言链栈与顺序栈的实现 的相关文章

  • ARM Cortex-M0+中断机制与中断编程步骤

    中断基础知识 为什么需要使用中断 xff1f 如果通过查询接收标志查看一个字节是否收到 xff0c 则需要时刻花费CPU等资源 但中断机制能够在收到一个字节后 xff0c 通知CPU把收到的字节取走 异常 xff1a CPU强行从正常运行的
  • 计算机网络体系结构

    一 计算机网络概述 计算机网络的概念 组成与功能 概念 功能 组成 工作方式 分类 计算机网络的标准化工作及相关组织 标准分类 计算机网络的标准化工作 相关组织 二 计算机网络体系结构与参考模型 计算机网络分层结构 计算机网络体系结构 为什
  • KL25嵌入式实验考核

    KL25嵌入式实验考核 xff08 6 43 xff09 404 页面找不到 说明资源在审核中 1 利用 KL25 小板实现 控制红色 LED 灯每隔 2 秒钟亮暗变换的同时 在 PC 机上显示 MCU 的计时时间 xff0c MCU 的初
  • 自制PMW3901光流模块

    PMW3901光流Sensor体积小 功耗低 精度高 xff0c 效果非常好 xff0c 自己做了一个光流小模块带TOF测距 xff0c 使用Pixracer 43 PX4固件 xff0c 测试效果还不错 测试视频 xff1a https
  • 模数转换ADC模块

    通用基础知识 ADC模块是嵌入式应用中重要的组成部分 xff0c 是嵌入式系统与外界连接的纽带 xff0c 是在测控系统中的重要内容 ADC模块 xff1a 即模数转换模块 AD转换模块 xff0c 功能是将电压信号转换为相应的数字信号 实
  • 实验五 Flash在线编程实验

    一 xff0e 实验目的 xff08 1 xff09 掌握 Flash 存储器在线编程的基本概念 xff08 2 xff09 熟悉 Flash 存储器的在线编程擦除和写入的步骤 xff08 3 xff09 进一步深入理解 MCU 和 C 串
  • Install OpenCV+ Python in Ubuntu

    1 VMware安装ubuntu 不建议在Windows下学习 安装教程 Tip1 xff1a Ubuntu安装结束后无法正常联网 然后就是等待漫长的更新 Tip2 文件含有中文名 打开终端 export LANG 61 en US xdg
  • Tracking motion in video

    Tracking motion in video Download the source code to Ball Tracking with OpenCV
  • parse command line arguments

    parse command line arguments
  • 计算机网络

    计算机网络 一 计算机网络体系结构 二 物理层 三 数据链路层 四 网络层 五 运输层 六 应用层
  • 【c++初学】遇到问题:对xxx未定义的引用

    在编译的时候遇到了 未定义引用 root 64 czp span class token operator span PC span class token operator span span class token operator s
  • 在同一个浏览器上打开同一个网址只打开一个窗口的方法

    具体问题看图吧 xff0c 我自己也说不清楚 具体操作如下 xff1a target属性的功能之一是可以在同一个浏览器中只打开被标记相同的网页窗口 利用这一功能可以实现以上问题 target属性链接地址 xff1a http www w3s
  • esp32 Arduino IDE读取航模接收机SBUS信号

    库函数下载链接https download csdn net download qq 40925542 87207281 该库函数适用于具有多个串口的开发板 xff0c esp32中测试通过 xff0c 测试代码如下 xff1a inclu
  • curl 401 unauthorized解决

    用curl获取web信息时遇到了401unauthorized错误 用下面的命令解决了 xff1a span class token function curl span insecure anyauth u admin password
  • git自建服务器-借助蒲公英实现远程访问

    git自建服务器 借助蒲公英实现远程访问 本文涉及蒲公英组网 xff0c 这里大家可以参考蒲公英官网组网教程 使用的硬件 蒲公英x3a 路由器 xff1a 用于智能组网 xff0c 实现内网穿透vpn功能 xff1b orange pi3
  • sockaddr与sockaddr_in结构体简介

    span class token keyword struct span sockaddr span class token punctuation span span class token keyword unsigned span s
  • ROS入门(二)——创建功能包和工作空间

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 工作空间 xff08 workspace xff09 xff1f 二 创建工作空间 xff08 workspace xf
  • SpringBoot异常处理-SimpleMappingExceptionResolver(四)

    异常处理 SimpleMappingExceptionResolver 配置 SimpleMappingExceptionResolver 处理异常 在全局异常类中添加一个方法完成异常的同一处理 结果是只不返回参数 没有上一个博客方法好 但
  • Matplotlib三维绘图,这一篇就够了

    Matplotlib三维绘图 xff0c 这一篇就够了 1 效果图1 1 3D线效果图1 2 3D散点效果图1 3 3D随机颜色散点效果图1 4 3D散点不同mark点效果图1 5 3D线框效果图1 6 3D曲面不透明效果图1 7 3D曲面

随机推荐