您的位置:首页 > 财经 > 产业 > 中国乐清网官网_上海app定制哪家好_北京优化靠谱的公司_关键词搜索热度

中国乐清网官网_上海app定制哪家好_北京优化靠谱的公司_关键词搜索热度

2024/12/25 12:54:51 来源:https://blog.csdn.net/m0_60984906/article/details/142877378  浏览:    关键词:中国乐清网官网_上海app定制哪家好_北京优化靠谱的公司_关键词搜索热度
中国乐清网官网_上海app定制哪家好_北京优化靠谱的公司_关键词搜索热度

栈:类似于一个容器,如我们生活中的箱子,我们向箱子里放东西,那么最先放的东西是最后才能拿出来的

f5263c03bd894da784275dcba5fd1d67.png

05099d90ef98460d9c2c554b2eb80b4a.png e1a1e4f5356b4bd3a12db495cf6cfb8c.png

代码实现

#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 100typedef struct {int* base;		// 栈底指针int* top;		// 栈顶指针int size;		// 栈元素个数
}stack;// 初始化栈
int initStack(stack* s) {s->top = (int*)malloc(sizeof(int) * MAX_SIZE);	// 开辟一块数字栈的内存空间,最大存储100个if (s->top == NULL) {		// 当内存空间不足时初始化失败printf("init error");return -1;}s->base = s->top;	// 初始化栈的栈顶和栈底是同一位置s->size = 0;		// 初始化栈的元素个数为0return 1;		// 初始化栈成功
}// 压栈
void push(stack* s, int data) {if (s->size >= MAX_SIZE) {		// 如果栈的元素超过最大个数则push失败printf("push error");return;}*(s->top) = data;		// 将栈顶当前指向的内存空间赋值s->top++;		// 栈顶指针向上移动s->size++;		// 栈的元素个数增加
}//出栈
int pop(stack* s) {if (s->top == s->base) {		// 如果是空栈则pop失败printf("pop error");return -1;}int* tmp = s->top;		// 临时指针指向栈的栈顶int result = *(--tmp);	// 将临时指针移动下一个位置并取出值(这个位置才是栈顶的元素所在位置)*(tmp + 1) = NULL;		// 栈顶元素置空s->top--;	// 栈顶指向下一个位置s->size--;	// 栈的元素个数减少return result;	// 返回栈顶的值
}// 遍历打印栈
void displayStack(stack* s) {stack* tmp = s;for (int i = 0; i < tmp->size; i++) {printf("%d ",*(tmp->base + i));		// 从栈底向栈顶打印元素}printf("\n");
}int main() {stack* s = (stack*)malloc(sizeof(stack));if (s == NULL) {printf("内存不足无法运行");}else {initStack(s);printf("初始化栈成功\n");printf("进栈:1\n");push(s, 1);printf("当前栈为:\n");displayStack(s);printf("进栈:2\n");push(s, 2);printf("当前栈为:\n");displayStack(s);printf("进栈:3\n");push(s, 3);printf("当前栈为:\n");displayStack(s);printf("出栈:%d\n", pop(s));printf("现在栈为:\n");displayStack(s);}return 0;
}

作者水平有限,如有错误请批评指正

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com