当前位置:首页 » 编程语言 » c语言压栈

c语言压栈

发布时间: 2022-08-23 18:17:18

A. c语言,压栈函数的形参为什么一定是指针,如果不是就改变不了栈的值。就一下函数解释一下

您说对了,不是指针就改变不了值,是这样的:
主函数的内存空间和函数的内存空间是分开的,在函数中对传来的值进行操作
因为存在不一样,所以,函数中的操作和主函数中的这个不联系,没有影响,
但是你想如果是指针,指针指向内存空间,虽然函数和主函数中的指针存在了不同的空间,但他们的值相同,就是指向的空间是一个地方,对指向空间的值改变,那是不是主函数中指向的那个值也变了,但是主函数传入的指针值你在函数中怎么操作,主函数中的值也不变哦。

B. 在c语言里,参数的压栈和出栈分别是什么意思

压栈是进栈,把元素放到栈里面;出栈,把元素从栈中取出。
栈是先进后出。举个例子,一个装羽毛球的筒子,一边能开一边不能开,1号球先进去,到筒子底部(进栈)。然后2号球接着进去,在你不拿出2号球的情况下,你是无法拿走1号球。而拿走球的操作就是出栈咯

C. C语言中函数参数压栈方式为什么是从右到左

栈是先入后出的数据结构.
函数参数从右到左, 那么到函数内部出栈的时候就是从左到右的顺序了.
对于普通函数无区别. 但对于可变参函数, 会根据左侧参数来决定共计有多少参数, 每个类型是什么.
比如 printf scanf这类的.
于是 就设计成从右到左的压栈方式了.

D. C语言函数压栈顺序

基本正确,补充一点,参数一般是往寄存器里面放,放不下的情况下,才压栈。

E. C语言压栈函数总是写不对

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

structnode{
char*name;
structnode*next;
};

voidpush(constchar*);
char*pop();
staticintcount=1;
char*s;
structnode*head=NULL,*tail=NULL;

intmain(){
charoperation[5],name[21],*answer;
printf("QBQBQ~ ");
while(scanf("%s",operation)!=EOF)
if(strcmp(operation,"p")==0){
scanf("%s",name);//蛋疼的输入
push(name);
}
else{
answer=pop();
if(answer==NULL){
printf("Queue_empty! ");
}
else{
printf("%s ",answer);

}
}
return0;
}

voidpush(constchar*s){

structnode*new=(structnode*)malloc(sizeof(structnode));
new->name=(char*)malloc(20);
strcpy(new->name,s);
if(count==1){
tail=head=new;
new->next=NULL;

}
else{
new->next=head;
head=new;

}
count++;
}
char*pop(){
structnode*temp=head;
if(NULL==head){
returnNULL;
}
while(temp->next!=tail){
temp=temp->next;
}
s=tail->name;
tail=temp;
temp->next=NULL;
returns;
}

F. c语言关于栈的问题

首先你题目没理解正确
(1)如果字符串中的应匹配的左括号和右括号不是同一类型,输出wrong
就是([123)这种应该输出wrong,而不是missing right

其次你的思路不太对,既然知道这题是考你栈结构的你就应该用栈解决啊,给你几个提示:
1、这题只用一个数组作为栈的物理空间就够了(当然还要有个char数组存放输入)
2、这题你用不着保存数字和右括号
3、绝大多数match以外的字符串不用扫描全就可以输出了,不然就算不WA可能要TO了
4、push pop peek这三种栈的操作都要用上

(算法思路,想独立完成就别看)












从左往右扫描字符串
遇到左括号压栈
遇到右括号去和栈顶匹配
栈已经空了没栈顶: miss left
匹配成功:弹出栈顶继续扫描
匹配不成功:wrong
遇到字符结尾

栈空了:match
否则:miss right
遇到其他数字啥的忽略掉

G. c语言中栈的定义

保存数据之用,先压栈最后出栈,不要与系统关键字同名就OK

H. c语言中函数递归调用中的压入堆栈是什么意思啊

我通俗点说:栈这个东西,你可以想象成手枪的弹夹,你装入子弹后,最后装入的子弹一定是最先打出去的,对吧?这就是栈的先进后出原则。递归函数,你想想,一定是最后执行的函数最先执行完,然后执行倒数第二个...以此类推。压入栈的意思就是现在内存给你一个弹夹,函数就是你的子弹,你把没运行一次这个函数,就是向弹夹里装了一个子弹,这就是压栈。出栈就是当找到递归函数出口后,再倒着一个一个解决刚才一大堆的函数,就像手枪吧子弹一个一个在打出去。关于栈,建议你学学汇编,一下就明白了

I. C语言的压栈 和入栈 出栈什么意思 啊 谁有什么好方法理解一些

栈的特点是先进后出。 你把栈当成一个水桶,把书一本本放进去,然后最先放的书就被压在最下面,所以最先进去的,最后出来。 压栈就是入栈就是把书放进水桶,出栈就是把书拿出来。

J. C语言中函数参数压栈方式为什么是从右到左的

因为有些是不定参数的
这样函数内 在处理的时候 从左到右 会更方便。
根据前面的参数 来确定后面还有多少参数 这样。

要函数内部弹栈从左到右
那么压栈就只能从右到左了。

热点内容
网络设置里没有服务器是什么 发布:2025-01-18 09:52:19 浏览:343
阿里云esc服务器系统 发布:2025-01-18 09:49:16 浏览:790
你们家的无线网密码是多少 发布:2025-01-18 09:47:50 浏览:729
renderscriptandroid 发布:2025-01-18 09:32:18 浏览:993
安卓手机如何拍游戏素材 发布:2025-01-18 09:30:59 浏览:348
广州日立压缩机有限公司 发布:2025-01-18 09:15:08 浏览:624
服务器两条宽带如何叠加网速 发布:2025-01-18 08:52:17 浏览:731
oracle存储过程集合 发布:2025-01-18 08:42:39 浏览:885
洋葱数学缓存 发布:2025-01-18 08:38:36 浏览:918
电影的文件夹都是 发布:2025-01-18 08:21:49 浏览:835