#include<stdio.h>
#include<stdlib.h>
#define STACKINCREMENT 10//每次追加栈空间的大小
typedef struct{
StackElemType *top;//栈顶指针
StackElemType *base;//栈底指针
int stacksize;//目前为栈分配的空间,以元素为单位
}Stack;
//栈是否为空
bool StackEmpty(Stack S)
{
if(S.base==S.top)
return true;
else
return false;
}
//入栈
void push(Stack &S,StackElemType elem)
{
if(S.top-S.base>=S.stacksize){//栈已满
S.base=(StackElemType *)realloc(S.base,
(S.stacksize+STACKINCREMENT)*sizeof(StackElemType));
if(!S.base)
exit(1);//追加空间失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=elem;
}
//出栈
void pop(Stack &S,StackElemType &elem)
{
if(S.base == S.top)
exit(1);
elem=*--S.top;
}一步一步写算法(之入栈出栈)
最新推荐文章于 2026-04-27 03:27:34 发布
本文介绍了一种使用C语言实现的动态栈结构及其基本操作,包括栈的创建、入栈和出栈等,并通过示例代码详细展示了如何通过动态内存分配来管理栈空间。
&spm=1001.2101.3001.5002&articleId=6978460&d=1&t=3&u=922fdfa6b6ee4e62b14a1727cba56b8c)
2383

被折叠的 条评论
为什么被折叠?



