news 2026/4/23 17:36:52

数据结构-栈(核心代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据结构-栈(核心代码)

顺式结构

#define _CRT_SECURE_NO_WARNINGS 1 //栈的顺式结构 #include<stdio.h> #define MAXSIZE 100 typedef int Elemtype; //定义栈 typedef struct stack { Elemtype data[MAXSIZE]; int top; }Stack; //初始化栈 void initstack(Stack* S) { S->top = -1; } //判断栈是否为空 int isempty(Stack* S) { if (S->top == -1) { printf("空的\n"); return 1; } else { return 0; } } //进栈/压栈 int pushStack(Stack* S,Elemtype e) { if (S->top >= MAXSIZE - 1) { printf("满了\n"); return 0; } S->top++; S->data[S->top] = e; return 1; } //出栈 int pop(Stack* S, Elemtype* e) { if (S->top >= MAXSIZE - 1) { printf("满了\n"); return 0; } *e = S->data[S->top]; S->top--; return 1; } //获取栈顶元素 int get_top(Stack* S, Elemtype* e) { if (S->top == -1) { printf("空的\n"); return 0; } *e = S->data[S->top]; return 1; } int main() { Stack S; initstack(&S); pushStack(&S,10); pushStack(&S,20); pushStack(&S,30); Elemtype e; pop(&S, &e); printf("%d\n", e); get_top(&S, &e); printf("%d\n", e); return 0; } //动态内存分配定义和初始化栈 #include<stdlib.h> #define MAXSIZE 100 typedef int Elemtype; typedef struct stack { Elemtype* data; int top; }Stack; Stack* initstack(Stack* S) { Stack* S = (Stack*)malloc(sizeof(Stack)); S->data = (Elemtype*)malloc(sizeof(Elemtype)*MAXSIZE); S->top = -1; return S; }

链式结构

#define _CRT_SECURE_NO_WARNINGS 1 //栈的链式结构 #include<stdio.h> #include<stdlib.h> typedef int Elemtype; #define MAXSIZE 100 //定义栈 typedef struct stack { Elemtype data; struct stack* Next;//栈顶 }Stack; //初始化栈 Stack* initstack() { Stack* S = (Stack*)malloc(sizeof(Stack)); S->data = 0; S->Next = NULL; return S; } //判断栈是否为空 int isEmpty(Stack* S) { if (S->Next == NULL) { printf("空的\n"); return 1; } else { return 0; } } //进展/压栈(相当于头插法,链式结构的栈只能头插法不能尾插法) int push(Stack* S, Elemtype e) { Stack* P = (Stack*)malloc(sizeof(Stack)); P->data = e; P->Next = S->Next; S->Next = P; return 1; } //出栈 int pop(Stack* S, Elemtype* e) { if (S->Next == NULL) { printf("空的\n"); return 0; } *e = S->Next->data; Stack* Q = S->Next; S->Next = Q->Next; free(Q); return 1; } //获取栈顶元素 int get_top(Stack* S, Elemtype* e) { if (S->Next == NULL) { printf("空的\n"); return 0; } *e = S->Next->data; return 1; } int main() { Stack* S = initstack(); isEmpty(S); push(S, 10); push(S, 20); push(S, 30); push(S, 40); Elemtype e; pop(S, &e); printf("%d\n", e); get_top(S, &e); printf("%d\n", e); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:11:53

机器学习——线性回归

介绍线性回归线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法相关关系&#xff1a;包含因果关系和平行关系因果关系&#xff1a;回归分析&#xff08;原因引起结果&#xff0c;需要明确自变量和因变量&#xff0…

作者头像 李华
网站建设 2026/4/23 13:42:48

ARM 架构中的数据同步屏障(DSB)是什么?

ARM 架构中的数据同步屏障&#xff08;DSB&#xff09;是什么&#xff1f; 在 ARM 架构中&#xff0c;数据同步屏障&#xff08;DSB&#xff0c;Data Synchronization Barrier&#xff09; 是一种内存屏障&#xff08;Memory Barrier&#xff09; 指令&#xff0c;用于确保在屏…

作者头像 李华
网站建设 2026/4/23 13:37:20

Windows右键菜单终极优化:告别杂乱,重获清爽操作体验

Windows右键菜单终极优化&#xff1a;告别杂乱&#xff0c;重获清爽操作体验 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为右键菜单中密密麻麻的无用选项…

作者头像 李华
网站建设 2026/4/23 13:38:48

5大核心功能!闲鱼自动化工具助你实现运营效率倍增

5大核心功能&#xff01;闲鱼自动化工具助你实现运营效率倍增 【免费下载链接】xianyu_automatize [iewoai]主要用于实现闲鱼真机自动化&#xff08;包括自动签到、自动擦亮、统计宝贝数据&#xff09; 项目地址: https://gitcode.com/gh_mirrors/xia/xianyu_automatize …

作者头像 李华
网站建设 2026/4/23 13:30:01

LSTM 模型 简要解析

LSTM 模型 简要解析 LSTM&#xff08;Long Short-Term Memory&#xff0c;长短期记忆网络&#xff09;是循环神经网络&#xff08;RNN&#xff09;的改进版本&#xff0c;核心解决了传统 RNN 在处理长序列时的“梯度消失/爆炸”问题&#xff0c;能够有效捕捉序列数据中的长距离…

作者头像 李华