数据结构--栈
一个栈
//栈 #include <stdio.h> #include <math.h> #include <stdlib.h> #include <algorithm> #define STACK_INIT_SIZE 20 #define STACK_INCREMENT 10 typedef char ElemType; typedef struct { ElemType *base; ElemType *top; int stacksize; }sqStack; void initStack(sqStack *s) { //内存中开辟一段连续空间作为栈空间,首地址赋值给 s->base s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); if (!s->base) exit(0); //分配空间失败 s->top = s->base; //最开始,栈顶就是栈底 s->stacksize = STACK_INIT_SIZE; } void Push(sqStack* s, ElemType e) { /////栈满,追加空间 if (s->top - s->base >= s->stacksize) { s->base = (ElemType *)realloc(s->base, (s->stacksize + STACK_INCREMENT)*sizeof(ElemType)); if (!s->base) { exit(0); //内存分配失败 } s->top = s->base + s->stacksize; s->stacksize = s->stacksize + STACK_INCREMENT;//设置栈的最大容量 } *(s->top) = e; //放入数据 s->top++; } void Pop(sqStack *s, ElemType *e) { if (s->top == s->base) { return; } *e = *--(s->top); } int StackLen(sqStack s) { return (s.top - s.base); } void DestoryStack(sqStack* s) { free(s->base); //释放内存空间 s->base = s->top = nullptr;//栈底栈顶指针置为nullptr s->stacksize = 0;//设置栈的最大容量为0 } void main() { printf("Hello world!\r\n"); ElemType c; sqStack s; int len, i, sum = 0; printf("Please input a Binary digit.\r\n"); initStack(&s);//创建一个栈来存放二进制字符串 ///输入 0/1 字符表示的二进制数,以#结束 scanf("%c", &c); while (c != '#') { Push(&s, c); scanf("%c", &c); } getchar(); len = StackLen(s); for (i = 0; i < len; i++) { Pop(&s, &c); sum = sum + (c - 48)*pow(2, i); //转为十进制 } printf("Decimal is %d.\r\n", sum); DestoryStack(&s); getchar(); } ///input: 10010101# ///output: 149
分类:
B.1.1-C/C++ 基础
, B.1.2-算法和数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2013-04-03 STL学习笔记-- vector
2013-04-03 STL学习笔记--前篇