c语言实现基本的数据结构(三) 栈
2024-09-02 00:27:18
#include <stdio.h>
#include <tchar.h>
#include <stdlib.h> #define StackSize 5
#define IncrementSize 5
// TODO: 在此处引用程序需要的其他头文件
struct Stack
{
int *base;
int *top;
int stacksize;
};
//初始化栈
bool Init_Stack(Stack* s){
s->base = (int*)malloc(StackSize*sizeof(int));
if (s->base == NULL) return false;
s->top = s->base;
s->stacksize = StackSize;
return true;
}
//销毁栈
bool Destroy_Stack(Stack* s){
free(s->base);
s->base = NULL;
s->top = NULL;
s->stacksize = ;
return true;
}
//清空栈
bool Clear_Stack(Stack* s){
s->top = s->base;
return true;
}
//插入元素
bool Push(Stack* s, int value){
if (s->top - s->base >= s->stacksize){
s->base = (int*)realloc(s->base, (StackSize + IncrementSize)*sizeof(int));
s->top = s->base + s->stacksize;//重置一下栈顶,感觉也没多大必要呀
s->stacksize += IncrementSize;
}
*++s->top = value;//栈顶指向栈顶元素
s->stacksize++;
return true;
}
//弹出元素
int Pop(Stack* s){
if (s->top == s->base) return false;
int p = *s->top--;
s->stacksize--;
return p;
}
//逆序打印
void Print_Stack(Stack s){
if (s.top == s.base) printf("此栈为空\n");
while (s.top!=s.base){
printf("%d->", Pop(&s));
}
printf("\n");
}
//正序打印
void Stack_Traverse(Stack s){
if (s.top == s.base) printf("此栈为空\n");
while (s.top != s.base){
printf("%d->", *++s.base);
}
printf("\n");
}
最新文章
- sqlserver 游标
- 页面无法加载main.css
- C/C++源代码到可执行程序的过程详解
- https的工作流程
- 作为平台的Windows PowerShell(二)
- 介绍一些实用的IOS手势识别库 (COCOS2D)
- 【转】JavaScript闭包
- php缓存生成及更新实现参考哦
- node to traverse cannot be null!
- Java程序员应该知道的10个Eclipse调试技巧
- JTAG应该如何接线
- Linux系统操作指令汇总
- Jquery笔记之第二天
- 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~
- 【编程练习】快速select算法的实现
- ./configure、make、make install
- 使用二进制安装包的方式单机部署MySQL8.0.13
- Linux:进程实例信息(/proc)
- Python有趣现象(不定时更新)
- Hadoop生态圈-Kafka的完全分布式部署
热门文章
- Jenkins构建部署jar/war后,服务无法在后台持续运行的解决方案
- Easy AR官方实例HelloARVideo无法播放视频,视频黑屏,只有声音----解决办法
- .NET Core CSharp初级篇 1-1
- Bzoj 3874: [Ahoi2014&;Jsoi2014]宅男计划 三分+贪心
- Linux关闭进程。
- 深入理解Java虚拟机二 阅读笔记
- CSingleLock
- 从似然函数到EM算法(附代码实现)
- [vue折线图] 记录SpringBoot+Vue3.0折线图订单信息展示
- 《HTML总结》