创意合肥网站建设成都注册公司代理公司
web/
2025/10/1 0:16:14/
文章来源:
创意合肥网站建设,成都注册公司代理公司,推广网站有效的免费方法,网站怎么做下载网页代码吗C语言实现简单的栈结构今天看到一个问题是要交换两个变量的值并且不能使用中间变量#xff0c;首先想到的方法就是用数学的方法#xff1a;int a 10,b 12;a a b; // 求和b a - b; // 和减去b得到的是a的值a a - b; // 和减去a(此时的b是最初a的值)得到b 的值这种方法很…C语言实现简单的栈结构今天看到一个问题是要交换两个变量的值并且不能使用中间变量首先想到的方法就是用数学的方法int a 10,b 12;a a b; // 求和b a - b; // 和减去b得到的是a的值a a - b; // 和减去a(此时的b是最初a的值)得到b 的值这种方法很容易看得懂。后来想用栈先进后出的特性先把a、b按顺序压栈然后a等于先出栈的bb等于后出栈的a于是就尝试下用C语言实现一个简单的栈结构。首先是用结构体定义一个栈struct stack{int top; // 记录栈中现有多少个数据data[top]表示栈顶int data[10]; // 表示栈中最多存10个数据};接下来是栈的一些基本操作压栈// 将一个数据压栈 成功返回1 不成功返回0 (栈溢出了)int push(myStack * stack, int data){// 判断是否溢出if (stack-top 1 N - 1) {stack-data[stack-top] data;return 1;}else{return 0;}}出栈// 出栈 如果是空 返回-1 否则返回栈顶的数据 然后栈中元素数量减一int pop(myStack * stack){if (is_empty(stack)) {return -1;}else{return stack-data[stack-top--];}}判空处理// 判断栈是否为空int is_empty(myStack * stack){if (stack-top -1) {return 1;}else{return 0;}}最后使用栈结构对两个变量值进行交换int a 10, b 12;initStack();push(pS, a);push(pS, b);a pop(pS);b pop(pS);printf(a %d, b %d\n,a,b);遇到的问题开始的时候对栈的操作的一些函数的参数我都是用结构体类型传的而不是现在的结构体指针类型。后来运行发现对结构体操作之后结构体的内容并没有改变。然后改成了结构体指针类型发现运行正确测试了下发现用结构体类型参数传入函数中是无法操作的据说C可以没试。好吧就这样全部代码#include #define N 10struct stack{int top; // 记录栈中有多少个数据data[top]表示栈顶int data[N];};typedef struct stack myStack;myStack S;myStack *pS S;void initStack(){pS-top -1;}// 判断栈是否为空int is_empty(myStack * stack){if (stack-top -1) {return 1;}else{return 0;}}// 设置栈为空void set_empty(myStack * stack){stack-top -1;}// 将一个数据压栈 成功返回1 不成功返回0 (栈溢出了)int push(myStack * stack, int data){// 判断是否溢出if (stack-top 1 N - 1) {stack-data[stack-top] data;return 1;}else{return 0;}}// 出栈 如果是空 返回-1 否则返回栈顶的数据 然后栈中元素数量减一int pop(myStack * stack){if (is_empty(stack)) {return -1;}else{return stack-data[stack-top--];}}int main() {int a 10, b 12;initStack();push(pS, a);push(pS, b);a pop(pS);b pop(pS);printf(a %d, b %d\n,a,b);return 0;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84734.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!