广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言之实现栈的基础创建
  • 162
分享到

C语言之实现栈的基础创建

2024-04-02 19:04:59 162人浏览 独家记忆
摘要

栈:是限定仅在表尾进行插入和删除操作的线性表! 栈的结构定义如下: typedef struct Stack { SLDataType *base;//栈底元素的地址

栈:是限定仅在表尾进行插入和删除操作的线性表!

栈的结构定义如下:


typedef struct Stack
{
    SLDataType *base;//栈底元素的地址
    int top;//栈顶元素的位置
} Stack;

栈的初始化如下:


SLDataType initStack(Stack &S)
{
  S.base=(SLDataType*)malloc(N*sizeof(SLDataType));//申请栈元素的存储空间
  if(S.base==NULL)
        return -1;
  S.top=0;
  return 1;
}

栈元素的输入接口:


SLDataType pushStack(Stack &S,int e)//输入栈的元素
{
    if(S.top==N)
        return 0;
    S.base[S.top]=e;
    S.top++;
    return 1;
}

完整代码如下:


#include<stdio.h>
#include<stdlib.h>
#define N 30
typedef int SLDataType;
typedef struct Stack
{
    SLDataType *base;//栈底元素的地址
    int top;//栈顶元素的位置
} Stack;
SLDataType initStack(Stack &S)
{
  S.base=(SLDataType*)malloc(N*sizeof(SLDataType));
  if(S.base==NULL)
        return -1;
  S.top=0;
  return 1;
}
SLDataType pushStack(Stack &S,int e)//输入栈的元素
{
    if(S.top==N)
        return 0;
    S.base[S.top]=e;
    S.top++;
    return 1;
}
void printStack(Stack &S)
{
    int i;
    i=0;
    while(i<S.top)
    {
        printf("%d ",S.base[i]);
        i++;
    }
    printf("\n");
}
int main()
{
    Stack S;
    int i,n,m;//n是入栈的个数
    if(initStack(S)==1)
        printf("栈初始化成功\n");
    printf("入栈的元素个数为:");
    scanf("%d",&n);
    i=1;
    printf("输入要入栈的元素:");
    while(i<=n)
    {
        scanf("%d",&m);
        if(pushStack(S,m)==0)
        {
            printf("%d入栈失败!\n",m);
            break;
        }
        i++;
    }
    printf("栈中的元素有:    ");
    printStack(S);//打印栈中的元素
    return 0;
}

运行结果如下:

在这里插入图片描述

到此这篇关于C语言之实现栈的基础创建的文章就介绍到这了,更多相关C语言之栈的创建内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言之实现栈的基础创建

本文链接: https://www.lsjlt.com/news/131450.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言之实现栈的基础创建
    栈:是限定仅在表尾进行插入和删除操作的线性表! 栈的结构定义如下: typedef struct Stack { SLDataType *base;//栈底元素的地址 ...
    99+
    2022-11-12
  • C语言栈的创建方式
    这篇文章主要讲解了“C语言栈的创建方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言栈的创建方式”吧!目录栈的结构定义如下:栈的初始化如下:栈元素的输入接口:完整代码如下:运行结果如下...
    99+
    2023-06-20
  • C 语言基础之C语言的常见关键字
    目录​1、auto 2、register 3、signed和unsigned 4、typedef 5、extern 6、拓展首先我们简单的和这些关键字见见面(被高亮的关键...
    99+
    2022-11-12
  • 深入了解C语言栈的创建
    目录栈的结构定义如下:栈的初始化如下:栈元素的输入接口:完整代码如下:运行结果如下:总结栈:是限定仅在表尾进行插入和删除操作的线性表! 栈的结构定义如下: typedef str...
    99+
    2022-11-12
  • C语言堆栈帧的介绍与创建
    什么是堆栈帧?        堆栈帧(stack frame)是一块堆栈保留区域,用于存放被传递的实际参数,子程序的返回...
    99+
    2022-11-12
  • C语言堆栈帧的介绍与创建方式
    本篇内容主要讲解“C语言堆栈帧的介绍与创建方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言堆栈帧的介绍与创建方式”吧!什么是堆栈帧?    &nb...
    99+
    2023-06-20
  • C语言详尽图解函数栈帧的创建和销毁实现
    目录常见寄存器基本的汇编语言知识具体实现关于栈帧创建与销毁的问答题注:本文章所使用的编译器是VS2010,由于不同编译器的函数栈帧与销毁略有差异,所以具体细节请读者自行实践! 常见寄...
    99+
    2022-11-13
  • C语言函数栈帧的创建与销毁详解
    目录前言一、函数栈帧是什么?1.寄存器2.ebp与esp二、函数栈帧的创建1.代码块2.调用堆栈3.esp与ebp如何维护栈帧总结 前言 大家在学习的时候一定有以下困惑: ...
    99+
    2022-11-13
  • C语言函数栈帧的创建和销毁详解
    目录写在前面Add函数的调用函数传参Add函数栈帧的创建Add函数栈帧的销毁main函数栈帧的销毁总结写在前面 我们知道,每一次函数调用都需要在栈区上为其开辟一块空间,这块空间就叫做...
    99+
    2022-11-13
  • C语言函数栈帧的创建和销毁介绍
    在初学c语言中,很多时候要记的内容有点多,有时候并不能深入的了解它。关于函数的栈帧可以帮助我们深入了解函数传参的过程,让我们了解c语言。 以下是我们平时接触过,但不了解的问题: 1...
    99+
    2022-11-12
  • C语言实现链栈的步骤
    目录链栈图解链栈的常规操作定义链栈结构体初始化链栈链栈判空计算链栈的长度链栈入栈(Push)链栈出栈(Pop)链栈各操作测试源代码 链栈图解 链栈的常规操作 LinkSta...
    99+
    2022-11-12
  • C语言实现栈的示例代码
    目录一、了解栈的结构特点二、具体实现补充 栈的用处一、了解栈的结构特点 栈是一种特殊的线性表,只允许从一端进出数据,称为后进先出,先进后出。 压栈:栈的插入操作叫做进栈/压...
    99+
    2022-11-13
  • C语言实现栈的示例详解
    目录前言一. 什么是栈二. 使用什么来实现栈三. 栈的实现3.1 头文件3.2 函数实现3.3 完整代码四. 栈的用处前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链...
    99+
    2022-11-13
  • C语言数据结构进阶之栈和队列的实现
    目录栈的实现:一、栈的概念和性质二、栈的实现思路三、栈的相关变量内存布局图四、栈的初始化和销毁五、栈的接口实现:1.入栈2.出栈3.获取栈顶的数据4.获取栈的元素个数5.判断栈是否为...
    99+
    2022-11-12
  • C语言数据结构之栈与队列的相互实现
    目录一、用对列实现栈代码实现二、用栈实现队列代码实现一、用对列实现栈 题干要求: 细节分析:队列是先进先出; 要实现的栈是先进后出。 解题思路:假设:先用一个队列储存数据 N 个,...
    99+
    2022-11-13
  • C语言函数栈帧的创建与销毁原理图解
    目录什么是函数栈帧什么是栈?与函数栈帧有关的汇编语句函数如何创建栈帧并销毁main函数栈帧开辟调用Add函数返回主函数什么是函数栈帧 我们在写C语言代码的时候,经常会把一个独立的功能...
    99+
    2022-11-13
  • c语言函数栈帧的创建和销毁过程详解
    目录1 相关知识介绍 1.1 寄存器1.2 函数栈帧概述2 栈帧创建与销毁过程1 相关知识介绍  1.1 寄存器 一般计算机内通用寄存器包括eax,ebx,ec...
    99+
    2022-11-12
  • C语言实现通用数据结构之通用椎栈
    本文实例为大家分享了C语言实现通用数据结构之通用椎栈的具体代码,供大家参考,具体内容如下 这是在通用链表的基础上实现的椎栈,关于链表的实现参见:C语言实现通用数据结构之通用链表 。 ...
    99+
    2022-11-12
  • C语言中栈的两种实现方法
    栈的两种实现方式 通常情况下,栈的实现方式有两种,一种方法是使用指针,而另一种方法则是使用数组。但是在调用程序时,我们没有必要知道具体使用了哪种方法。 一、顺序栈 #inclu...
    99+
    2022-11-12
  • C语言 栈与数组的实现详解
    目录栈的实现栈的定义数组实现静态栈动态栈链栈栈的实现 首先我们思考一个问题,什么是栈? 栈是数据结构的一种,栈在我们日常编码中遇到的非常多,很多人对栈的接触可能仅仅局限在 递归使用的...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作