c语言经典堆栈问题,C语言堆和栈

本文目录一览:

关于C语言堆栈的问题!

C语言中堆栈说的是数据结构,和系统中的堆栈中是不一样的,/*

**用一个静态数组实现的堆栈。数组的长度只能通过修改#define的定义

**并对模块重新进行编译

*/#include”stack.h”

#includeassert.h#define STACK_SIZE 100 /*堆栈中值数量的最大限制*//*

**存储堆栈中值的数组和一个指向堆栈顶部元素的指针

*/

static STACK_TYPE stack[STACK_SIZE];

static int top_element =-1;/*push*/

void push(STACK_TYPE value)

{

assert(!is_full());

top_element +=1;

stack[top_element]=value;

}/*pop*/

STACK_TYPE pop(void)

{

STACK_TYPE temp;

assert(!is_empty());

temp=stack[top_element];

top_element -= 1;

return temp;

}/*top*/

STACK_TYPE top (void)

{

assert(!is_empty());

return stack[top_element];

}/*

** is _empty

*/

int is_empty(void)

{

return top_element == -1;

}/*

**is_full

*/

int is_full(void)

{

return top_element ==STACK_SIZE -1;

}这是个静态堆栈,你可以动态的申请内存来编写动态堆栈

C语言程序栈堆的问题

你在栈中使用了过多空间(例如开辟了超大数组)。将占用过多空间的变量移到全局区或者使用malloc为其在堆中分配内存。

C语言中堆栈问题

我帮你写了InitStack和StackEmpty函数,程序最终结果如下:

#define maxnum 20

#includestdio.h

#includestdlib.h

struct stacktype

{

int stack[maxnum];

int top;

};

struct stacktype *S;//顶一个堆栈

int push(struct stacktype *s,int x)

{

if(s-top=maxnum-1)

return false;

else

s-top++;

s-stack[s-top]=x;

return true;

}

int pop(struct stacktype *s)

{

if(s-top 0)

return NULL;

else

s-top–;

return(s-stack[s-top+1]);

}

//初始化堆栈

void InitStack(struct stacktype* S)

{

S = (struct stacktype *)malloc(sizeof(struct stacktype));

S-top = -1;

}

//判断堆栈是否为空

bool StackEmpty(struct stacktype *S)

{

if (S-top 0)

{

return true;

}

return false;

}

void dec_to_bin(int n,int b)

{

int e;

InitStack(S);//请问初始化堆栈函数怎么写?

if (S ==NULL)

{

printf(“error \n”);

return;

}

while(n)

{

push(S,n%b);

n=n/b;

}

while(!StackEmpty(S))//判断栈为空的函数怎么写?

{

e=pop(S);

printf(“%d”,e);

}

}

void main()

{

dec_to_bin(13,2);

printf(“\n”);

}

程序运行结果为:

1101

原创文章,作者:FIAC,如若转载,请注明出处:https://www.506064.com/n/137188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FIACFIAC
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相关推荐

  • Python官网中文版:解决你的编程问题

    Python是一种高级编程语言,它可以用于Web开发、科学计算、人工智能等领域。Python官网中文版提供了全面的资源和教程,可以帮助你入门学习和进一步提高编程技能。 一、Pyth…

    编程 2025-04-29
  • 如何解决WPS保存提示会导致宏不可用的问题

    如果您使用过WPS,可能会碰到在保存的时候提示“文件中含有宏,保存将导致宏不可用”的问题。这个问题是因为WPS在默认情况下不允许保存带有宏的文件,为了解决这个问题,本篇文章将从多个…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Java Thread.start() 执行几次的相关问题

    Java多线程编程作为Java开发中的重要内容,自然会有很多相关问题。在本篇文章中,我们将以Java Thread.start() 执行几次为中心,为您介绍这方面的问题及其解决方案…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python爬虫乱码问题

    在网络爬虫中,经常会遇到中文乱码问题。虽然Python自带了编码转换功能,但有时候会出现一些比较奇怪的情况。本文章将从多个方面对Python爬虫乱码问题进行详细的阐述,并给出对应的…

    编程 2025-04-29
  • NodeJS 建立TCP连接出现粘包问题

    在TCP/IP协议中,由于TCP是面向字节流的协议,发送方把需要传输的数据流按照MSS(Maximum Segment Size,最大报文段长度)来分割成若干个TCP分节,在接收端…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29

发表回复

登录后才能评论