返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >深入了解C语言栈的创建
  • 848
分享到

深入了解C语言栈的创建

2024-04-02 19:04:59 848人浏览 泡泡鱼
摘要

目录栈的结构定义如下:栈的初始化如下:栈元素的输入接口:完整代码如下:运行结果如下:总结栈:是限定仅在表尾进行插入和删除操作的线性表! 栈的结构定义如下: typedef str

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

栈的结构定义如下:


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;
}

运行结果如下:

在这里插入图片描述

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 深入了解C语言栈的创建

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

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

猜你喜欢
  • 深入了解C语言栈的创建
    目录栈的结构定义如下:栈的初始化如下:栈元素的输入接口:完整代码如下:运行结果如下:总结栈:是限定仅在表尾进行插入和删除操作的线性表! 栈的结构定义如下: typedef str...
    99+
    2024-04-02
  • C语言栈的创建方式
    这篇文章主要讲解了“C语言栈的创建方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言栈的创建方式”吧!目录栈的结构定义如下:栈的初始化如下:栈元素的输入接口:完整代码如下:运行结果如下...
    99+
    2023-06-20
  • C语言深入探究栈的原理
    栈 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。 栈的实现 栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优...
    99+
    2024-04-02
  • 深入了解C语言指针
    目录指针是什么?指针和指针类型指针运算总结指针是什么? 总结:指针就是个变量,变量里面是地址,指针就是地址。(存放在指针的值都被当成地址处理)。 注:指针的大小在32位平台是4个字节...
    99+
    2024-04-02
  • C语言深入了解函数
    目录1. 函数的概念2. 函数的分类从定义角度分从参数角度分类从返回值角度分3. 函数的定义4. 函数的声明5. 函数的调用6. 递归函数1. 函数的概念 函数是c语言的功能单位,实...
    99+
    2024-04-02
  • 深入了解C++和C语言的异同
    C++和C语言是两种流行的编程语言,它们在很多方面都相似,但也有许多显著的差异。本文将深入探讨C++和C语言的异同点,并通过具体的代码示例来说明它们之间的差异。 一、基本语法和结构差异...
    99+
    2024-04-02
  • 深入了解c语言的循环语句
    目录C语言循环语句while循环for循环do......while循环的嵌套总结:C语言循环语句 大多数人都希望自己是体格强健,天资聪慧,多才多艺的人。虽然有时事与愿违,但至少我们...
    99+
    2024-04-02
  • C语言堆栈帧的介绍与创建
    什么是堆栈帧?        堆栈帧(stack frame)是一块堆栈保留区域,用于存放被传递的实际参数,子程序的返回...
    99+
    2024-04-02
  • C语言之实现栈的基础创建
    栈:是限定仅在表尾进行插入和删除操作的线性表! 栈的结构定义如下: typedef struct Stack { SLDataType *base;//栈底元素的地址 ...
    99+
    2024-04-02
  • C语言中函数栈帧的创建和销毁的深层分析
    目录一、本文目标二、基础知识1、寄存器2、代码案例  3、总体栈帧概况4、所需反汇编代码总览三、函数栈帧创建销毁过程1、_tmainCRTStartup函数(调用main函...
    99+
    2024-04-02
  • C语言函数栈帧的创建和销毁详解
    目录写在前面Add函数的调用函数传参Add函数栈帧的创建Add函数栈帧的销毁main函数栈帧的销毁总结写在前面 我们知道,每一次函数调用都需要在栈区上为其开辟一块空间,这块空间就叫做...
    99+
    2024-04-02
  • C语言函数栈帧的创建与销毁详解
    目录前言一、函数栈帧是什么?1.寄存器2.ebp与esp二、函数栈帧的创建1.代码块2.调用堆栈3.esp与ebp如何维护栈帧总结 前言 大家在学习的时候一定有以下困惑: ...
    99+
    2024-04-02
  • 深入了解C语言基本单位
    C语言是一种强大而灵活的编程语言,被广泛应用于系统和应用程序的开发中。深入了解C语言的基本单位,不仅有助于加深对其工作原理的理解,还能提高编程能力。本文将通过具体的代码示例,带领读者逐...
    99+
    2024-04-02
  • 怎么深入了解c语言的循环语句
    怎么深入了解c语言的循环语句,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C语言循环语句大多数人都希望自己是体格强健,天资聪慧,多才多艺的人。虽然有时事与愿违,但至少我们用...
    99+
    2023-06-22
  • 深入了解C语言中的const和指针
    目录前言指针的赋值问题ANSI C 有关简单赋值的标准问题解决const修饰const修饰变量const修饰指针前言 文章内容由阅读《C专家编程》整理而来。希望可以帮助大家解决在指针...
    99+
    2024-04-02
  • 深入了解C语言冒泡排序优解
    目录1:直接冒泡2:函数冒泡3:冒泡优化总结:1:直接冒泡 #include<stdio.h> int main() { int i,j; int ...
    99+
    2024-04-02
  • C语言堆栈帧的介绍与创建方式
    本篇内容主要讲解“C语言堆栈帧的介绍与创建方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言堆栈帧的介绍与创建方式”吧!什么是堆栈帧?    &nb...
    99+
    2023-06-20
  • C语言由浅入深了解变量的应用
    目录1. 变量的存储类别内存虚拟内存分区(运行程序时进行分区) 2. 全局变量普通的全局变量静态全局变量3. 局部变量普通局部变量静态局部变量4. const不可赋值变量5...
    99+
    2024-04-02
  • 深入了解C语言的动态内存管理
    目录一、为什么会存在动态内存二、动态内存函数1.malloc和free2.calloc3.realloc三、动态内存函数常见错误2.对NULL指针进行解引用操作3.使用free释放一...
    99+
    2024-04-02
  • c语言函数栈帧的创建和销毁过程详解
    目录1 相关知识介绍 1.1 寄存器1.2 函数栈帧概述2 栈帧创建与销毁过程1 相关知识介绍  1.1 寄存器 一般计算机内通用寄存器包括eax,ebx,ec...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作