我通俗点说:栈这个东西,你可以想象成手枪的弹夹,你装入子弹后,最后装入的子弹一定是最先打出去的,对吧?这就是栈的先进后出原则。递归函数,你想想,一定是最后执行的函数最先执行完,然后执行倒数第二个...以此类推。压入栈的意思就是现在内存给你一个弹夹,函数就是你的子弹,你把没运行一次这个函数,就是向弹夹里装了一个子弹,这就是压栈。出栈就是当找到递归函数出口后,再倒着一个一个解决刚才一大堆的函数,就像手枪吧子弹一个一个在打出去。关于栈,建议你学学汇编,一下就明白了
我们提供的服务有:网站设计、成都做网站、微信公众号开发、网站优化、网站认证、安顺ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的安顺网站制作公司
方法很简单:你讲两个栈都传进去,类似于 : int pus(SeqStack1 *s, DataType* x1, SeqStack2 *s, DataType* x2)(SeqStack1是你的第一个栈,SeqStack2是第二个栈,DataType是你需要传进去的数据的类型),然后在这个函数里面先判断x1 ,x2是否为空,如果为空,则他对应的那个栈不需要压栈,如果不为空,则执行相应的压栈操作。
不明白继续追问!
就用这堆函数就可以了,不懂再追问
#include
string.h
#define
MaxSize
100
int
mystack[MaxSize];/*
第0个单元保存现在的长度
*/
/*
初始化函数
*/
void
init_stack(int*
stack){
memset(stack,0,sizeof(stack));
}
/*
入栈函数
*/
void
push_back(int*
stack,int
num){
if(stack[0]MaxSize-1){
++stack[0];
stack[
stack[0]
]
=
num;
}
else{
printf("ERORR!\n");
}
}
/*
返回栈空间
*/
int
size(int*
stack){
return
stack[0];
}
/*
返回栈顶函数
*/
int
top(int*
stack){
if(stack[0]0){
return
stack[
stack[0]
];
}
else{
printf("ERORR!\n");
return
-1;
}
}
/*
出栈函数
*/
void
pop(int*
stack){
if(stack[0]0){
--stack[0];
}
else{
printf("ERORR!\n");
}
}