C语言链式栈和顺序栈的实现

顺序栈和链式栈的实现(c语言) NULL){ // 遍历栈。Status push(Sqstack &S,SElemType x) //入栈。Status pop(Sqstack &S,SElemType &e) //出栈。// p指向头指针原后继。// 头指针后继指向p。= 9999){ // 输入9999停止。 阅读详情

链式栈:

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

liststack *top;

void setnull(liststack *ltop);
liststack *push(liststack *ltop,int x);
liststack *pop(liststack *ltop,int *x);

int main()
{
    int sel=0;
    int ret=0;
    int num=0;

    setnull(top);

    while(1)
    {
        printf("链式栈操作如下所示:\n");
        printf("\t1:压栈\n\t2:出栈\n\t3:退出\n");
        printf("请输入选择:\n");
        scanf("%d",&sel);
        switch(sel)
        {
            case 1:
                printf("请输入压栈数据:\n");
                scanf("%d",&num);
                top=push(top,num);
                if(NULL==top)
                {
                    printf("压栈错误\n");
                }
                else
                {
                    printf("压栈正确\n");
                }
                break;
            case 2:
                top = pop(top,&ret);
                if(NULL==top)
                {
                    printf("出栈错误\n");
                }
                else
                {
                    printf("出栈数据:%d\n",ret);
                }
                break;
            case 3:
                exit(0);
                break;
            default:
                printf("请输入正确选项\n");
                break;
        }
    }

    return 0;
}

void setnull(liststack *ltop)
{
    ltop=NULL;
}

liststack *push(liststack *ltop,int x)
{
    liststack *q=NULL;
    q = (liststack *)malloc(sizeof(liststack));
    if(NULL==q)
    {
        return NULL;
    }
    q->data=x;
    
    q->next=ltop;
    ltop=q;

    return ltop;
}

liststack *pop(liststack *ltop,int *x)
{
    if(NULL==ltop)
    {
        printf("underflow\n");
        return NULL;
    }

    liststack *p=NULL;
    *x=ltop->data;
    p = ltop;
    ltop=ltop->next;
    free(p);
    return ltop;
}


顺序栈:

#include <stdio.h>
#include <stdlib.h>

#define maxsize 5
typedef int datatype;

typedef struct
{
    datatype data[maxsize];
    datatype top;
}seqstack;

void setnull(seqstack *ls);
int empty(seqstack *ls);
int push(seqstack *ls,int x);
int pop(seqstack *ls);
int top(seqstack *ls);

int main()
{
    int sel=0;
    int num=0;
    int ret=0;
    seqstack *s=NULL;
    s = (seqstack *)malloc(sizeof(seqstack));
    setnull(s);
    while(1)
    {
        printf("顺序栈操作如下所示:\n");
        printf("\t1:压栈\n\t2:出栈\n\t3:取栈顶数据\n\t4:退出\n");
        printf("请输入选项:");
        scanf("%d",&sel);
        getchar();
        switch(sel)
        {
            case 1:
                printf("请输入压栈数据:\n");
                scanf("%d",&num);
                ret=push(s,num);
                if(ret==0)
                {
                    printf("压栈错误\n");
                }
                else
                {
                    printf("压栈正确\n");
                }
                break;
            case 2:
                ret = pop(s);
                if(ret==0)
                {
                    printf("出栈错误\n");
                }
                else
                {
                    printf("出栈元素是:%d\n",ret);
                }
                break;
            case 3:
                ret = top(s);
                if(ret==0)
                {
                    printf("取栈顶元素错误\n");
                }
                else
                {
                    printf("取栈顶元素是:%d\n",ret);
                }
                break;
            case 4:
                exit(0);
                break;
            default:
                printf("请选择正确的数据\n");
                break;
        }
    
    }
    return 0;
}

void setnull(seqstack *ls)
{
    ls->top=-1;
}
int empty(seqstack *ls)
{
    int ret=0;
    ret = (ls->top>=0)?0:1;
    return ret;
}
int push(seqstack *ls,int x)
{
    printf("push top:%d\n",ls->top);
    if(ls->top == maxsize-1)
    {
        printf("overflow\n");
        return 0;
    }
    ls->top++;
    ls->data[ls->top]=x;
    return 1;
}
int pop(seqstack *ls)
{
    printf("pop top:%d\n",ls->top);
    if(empty(ls))
    {
        printf("underflow\n");
        return 0;
    }
    int num=0;
    num=ls->data[ls->top];
    ls->top--;
    return num;
}
int top(seqstack *ls)
{
    if(empty(ls))
    {
        printf("underflow\n");
        return 0;
    }
    int num=0;
    num=ls->data[ls->top];
    return num;
}



RK3568+XS9922B+Android11双模视频输入:CVBS与AHD兼容驱动开发实战 本文详细介绍了基于RK3568平台和XS9922B解码芯片,在Android11系统上开发支持CVBS与AHD双模视频输入的兼容驱动实战。内容涵盖硬件选型、内核驱动框架分析、双模信号自动识别与配置、视频通道切换实现及图像质量优化等关键技术点,为车载监控等需要兼容新旧摄像头的项目提供完整解决方案。 阅读详情

相关推荐

Vivado静态时序分析学习笔记(1)

静态时序分析分为片内时序分析(寄存器与寄存器之间的时序关系)和片外时序分析(IO时序分析)。(1)建立时间 setup time在时钟事件(上升沿/下降沿)发生之前数据信号应保持稳定的时间。把实际电路抽象成前级D触发器+组合逻辑+后级D触发器。

Fantaasky的博客 4376

数据结构:栈「详解」

栈(Stack)是一种常见的数据结构,它是一种“后进先出”(Last In First Out,LIFO)的数据结构。栈可以看做是一种特殊的线性表,只能在栈顶进行插入和删除操作。栈顶是允许操作的,而栈底是固定的。

weixin_56433857的博客 1万+

低功耗设计:rush current

在power gating的设计中引入了一个rush current的概念,它的产生原因是switch cell上电过程相当于电容充电过程,会产生一个短期的大电流,称之为rush current。 1.rush current的危害 1)造成巨大的ir drop 2)导致功能错误 3)一些极端例子中,rush current会引发VDD短期崩溃,造成存储在retention register与mem中的数据失效 4)大电流会还对周围always on模块造成干扰,产生大的压降 2.控制rus

m0_61544122的博客 3071

栈——栈的定义及基本操作(初始化、判空、进栈、出栈、遍历栈、销毁栈等)

文章目录栈的定义栈的存储栈上的基本操作初始化判空操作进栈操作出栈操作读栈顶元素遍历栈销毁栈完整代码及实例共享栈 栈的定义 栈(Stack)是只允许在一端进行插入或删除操作的线性表。 栈的示意图: 栈顶Top:线性表允许插入和删除的那一端。 栈底Bottom:固定的,不允许进行插入和删除的另一端。  假设某个栈S={a1,a2, … ,an},如上图所示,则a1为栈底元素,an为栈顶元素。由于只能在栈顶进行插入和删除操作,故进栈顺序为a1,a2, … ,an,出栈顺序为an, … ,a2,a1。故栈的操

薛定谔的猫的博客 9万+

24、手机GPS天线设计与有源GNSS天线性能评估

本文系统介绍了手机GPS天线的代表性设计,包括隔离磁偶极子、共面平衡偶极子和小型陶瓷加载QHA天线,分析了其结构特点、性能参数及适用场景。同时详细阐述了有源GNSS天线的组成结构与G/T比作为关键性能指标的评估方法,并提出了组件选择、噪声控制和增益提升等优化策略。最后展望了未来手机GPS天线在小型化、多频集成和智能适应性方面的发展趋势。

pytorch8learner的博客 720

【Flink】FLink session yarn kerberos认证报错 PortUnreachableException: ICMP Port Unreachable

本篇博客是在上一篇博客:【Flink】FLink session yarn kerberos认证报错 KrbException: Cannot locate default realm还没找到原因的时候做的一次尝试。因为项目需要,我们需要对接华为认证的yarn集群,运行flink任务,我们的任务分为两种,yarn pre-job模式和flink session模式。我们在配置文件中配置如下# kerberos认证需要的东西提交任务的脚本如下。

九师兄 1267

深入理解栈(Stack)

栈是一种特殊的线性表,它特殊在只能在一端进行插入删除操作,并且最重要的是先进后出 (1)栈顶:进行数据插入和删除操作的一端 (2)栈顶:栈顶的另一端 (3)入栈:栈的插入操作,也叫做压栈/进栈,入数据在栈顶 (4)出站:栈的删除操作,出数据也在栈顶 中缀变后缀三步走 (1)按规则加括号 (2)将运算符放括号外面 (3)去掉所有括号 后缀计算4步走 (1)将数字按顺序依次放入栈中 (2)遇到运算符后,拿出栈顶两个元素 (3)计算(次栈顶元素 运算符栈顶元素) (4)将计算的结果,继续放入栈中 ...

m0_58761900的博客 8835

2、硬件工程师笔试面试汇总(2025版本)

本文摘要:文章系统梳理了硬件工程师笔试面试中的电子元器件知识要点,涵盖电阻、电容、电感、二极管、三极管、MOS管等器件的工作原理、选型要点和应用场景。详细解析了UART、I2C、SPI等通信协议的特点及实现方式,并探讨了电源管理、信号处理、PCB设计等核心问题。针对常见电路如放大电路、滤波电路、逻辑电路等提供了深入分析,同时介绍了示波器使用、单片机系统设计等实用技能。文章还包含器件封装、电平转换、时序分析等工程实践内容,并附有相关真题解析和仿真实验指导,为硬件工程师提供全面的技术参考。

XU157303764的博客 9008

栈的链式存储结构的简单实现

上一篇博客我们进行了栈的顺序存储结构的简单实现,这一篇博客进行栈的链式存储结构的简单实现 一、链栈的定义 我们都知道栈有栈顶指针,链表有头指针,这两者是缺一不可的,所以在进行链栈的设计的时候,我们就把栈顶放在单链表的头部。从而方便我们的插入和删除的操作。那么链栈的基本结构如下所示: 二、链栈的简单实现 1、链栈的整体结构的定义 typedef int ElemType; typedef stru...

qq_43411563的博客 899

蓝牙学习笔记之HCI协议(一)

目录 协议浅述 HCI简介 HCI协议数据格式 HCI Command Packet HCI ACL Data Packet HCI Synchronous(SCO) Data Packet HCI Event Packet HCI命令和事件介绍 Inquiry command Write Local Name Command Read BD_ADDR Command H...

在云巅的博客 2万+

1、电路分析知识全解析:从基础到实践应用

本博客全面解析电路分析知识体系,涵盖从基础的电压、电流、电阻概念到复杂的交流电路、瞬态分析和高级应用如滤波器与变压器等内容。适合电子技术专业学生和技术爱好者学习,提供详细的知识结构、学习路径、实践示例以及丰富的学习资源,包括计算机模拟工具Multisim和PSpice的使用指导。通过理论与实践结合,帮助学习者掌握电路分析的核心技能,为电子工程和电力系统等相关领域打下坚实基础。

iii12的专栏 159

栈(最全的概念)-----最通俗易懂的文章

简要 栈和队列都是线性表的一种,所以类型差不多,之前说数据结构其实单位都为结构体,磊成抽象的一种结构,就像搭房子一样,原材料一样,只不过搭出来的样式不同。 栈 首先栈也是一种线性表,因此也有顺序和链式结构,比较常用的为顺序栈,栈的抽象 结构图为 栈的抽象结构和一个容器相同,比如水杯,底部为密封上方为开口,因此栈的存储数据都是从上方增删该除。放数据为进栈,拿数据则叫出栈 ...

毛聿修的博客 8824

微信小程序逆向实战:从HTTPS抓包到API接口全解构

方案原理优点缺点方案一:使用低版本微信+系统代理微信7.0以下版本未强制不走代理操作简单容易被封号,无法使用新版小程序方案二:Hook SSL层(Xposed/Frida)动态Hook Java的TrustManager或系统的SSLContext,绕过证书校验灵活可控需要Root/越狱,技术门槛高方案三:VPN转发抓包(PacketCapture)利用Android VPNService将所有流量转发到本地代理无需Root,兼容性好部分机型存在性能问题。

2201_76125261的博客 266

C语言 链式栈和顺序栈的实现

1、简介: 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 术语解释: 栈顶(Top) :允许数据插入和删除的端,即栈的顶端。 栈底(Bottom):固定并且不允许进行插入和删除操作的一端,即栈底。 栈空:即不含有任何元素的栈。 进栈、入

weixin_44636409的博客 1229

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【数据结构】C语言实现顺序栈和链式栈

顺序栈 SeqStack.h #pragma once #include typedef char SeqType; #define SEQMAXSIZE 1000 typedef struct SeqStack{ SeqType data[SEQMAXSIZE]; int top; int bottom; }SeqStack; //初始化栈 void Se

Qregi的博客 771

C语言实现顺序栈 和 链式栈

栈:先进后出 1.顺序栈 #include <stdio.h> #include <stdlib.h> #define STACK_INIT_SIZE 100 //栈初始容量 #define STACKINCREMENT 10 //存储空间分配增量 typedef int dataType; typedef struct { dataType *base; .........

记录学习点滴 1615

对栈的实现(顺序栈和链式栈)C语言

栈的实现 两种方法实现: 顺序栈 :基于静态顺序表 链式栈 :基于链表 顺序栈 函数的结构体和声明 基于顺序表的栈,也就是用数组的增删查改 我们看结构体和声明 typedef char SeqType; typedef struct SeqStack{ size_t size; SeqType data[MAXREPOSITORY]; }SeqStack; ...

GangStudyIT的博客 715

C语言实现顺序栈 和 链式栈_顺序栈和链栈的程序实现完整代码简单易懂

遍历栈:19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,int getTop(LinkedStack* stk, dataType* x);// 遍历栈中元素并输出。// 返回栈中存储的元素个数。

2401_89828969的博客 776

数据结构学习——顺序栈和链式栈的简单实现和解析(C语言版)

数据结构——栈的简单解析和实现一、概念二、入栈(push)三、出栈(pop)四、顺序栈简单实现(1)进栈操作(2)出栈操作 一、概念 本篇所讲解的栈和队列属于逻辑结构上的划分。逻辑结构分为线性结构、非线性结构 线性结构:有且仅有一个开始节点和一个终端节点,每个节点最多只有一个直接前驱和一个直接后继。代表结构:栈、队列 非线性结构:一个节点可能有多个直接前驱和多个直接后继。代表结构:树、图 堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称

正弦定理的博客 1446

【数据结构】顺序栈和链式栈的简单实现和解析(C语言版)

堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。用数组实现栈,就是将数组的增、删操作限制在头部或者尾部,即只能在数组的一端操作元素,就成了顺序栈。本篇所讲解的栈和队列属于逻辑结构上的划分。逻辑结构分为线性结构、非线性结构。

咖喱年糕的博客 1261

【数据结构】栈 顺序栈和链式栈(C语言实现)

栈是一个先进后出的结构 栈的基本操作 入栈 出栈 判断栈空 判断栈满 栈包括两种 顺序存储的数组栈 非顺序存储的链表栈 #include <stdio.h> #include <string.h> #include <stdlib.h> #define MaxSize 1024 typedef struct { int data[MaxSize]; //存储元素的数组 int topIdx; //栈顶指针 }SeqStack;

那可真是太开心了的博客 488

C语言实现顺序栈 和 链式栈_顺序栈和链栈的程序实现完整代码简单易懂(1)

遍历栈:19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,int getTop(LinkedStack* stk, dataType* x);// 遍历栈中元素并输出。

2401_85011985的博客 935

数据结构顺序栈和链式栈模板

顺序栈 C语言实现 #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXSIZE 100 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define true 1 #define false 0 typedef int Stat...

初学者的博客 251
上一篇: C语言数组,顺序表的初始化,添加,删除和打印
下一篇: C语言实现链式队列和顺序队列
卫水金波
博客等级 码龄12年 73粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值