1. c语言中栈的定义
保存数据之用,先压栈最后出栈,不要与系统关键字同名就OK
2. c语言栈是什么像这题和栈有什么关系
栈是一种数据结构,用于存放数据,可以理解为羽毛球筒,羽毛球就是数据,最先放进去的最后才能拿出来。
c语言可以用结构体来定义栈,每个元素以指针指向它前面的元素,最前面的元素称为栈顶,它的指针为空。
依次读入字符,遇到括号则放入括号栈,遇到其他字符则跳过。
若遇到右括号,则判断它前面的元素是否是和他匹配的左括号,若不是,则返回"不匹配",若是,则将他们2个丢掉,让左括号的指针指向空即可。
3. C语言栈是什么,栈在哪,需要定义吗
栈有两种
一种是操作系统中的
进程栈
或者线程栈
系统自动生成
不需要定义
一种是数据结构中的
需要自己实现。
4. 计算机c语言中 什么是栈和队列
栈(Stack)是仅限制在表的一端进行插入和删除运算的线性表,称插入、删除这一端为栈顶,另一端称为栈底。表中无元素时为空栈。栈 的修改是按后进先出的原则进行的,我们又称栈为LIFO表(Last In First Out)。通常栈有顺序栈和链栈两种存储结构。 栈的基本运算有六种: ·构造空栈:InitStack(S) ·判栈空: StackEmpty(S) ·判栈满: StackFull(S) ·进栈: Push(S,x) ·退栈: Pop(S) ·取栈顶元素:StackTop(S) 在顺序栈中有"上溢"和"下溢"的现象。 ·"上溢"是栈顶指针指出栈的外面是出错状态。 ·"下溢"可以表示栈为空栈,因此用来作为控制转移的条件。 顺序栈中的基本操作有六种:·构造空栈·判栈空·判栈满·进栈·退栈·取栈顶元素 链栈则没有上溢的限制,因此进栈不要判栈满。链栈不需要在头部附加头结点,只要有链表的头指针就可以了。 链栈中的基本操作有五种:·构造空栈·判栈空·进栈·退栈·取栈顶元素 队列(Queue)是一种运算受限的线性表,插入在表的一端进行,而删除在表的另一端进行,允许删除的一端称为队头(front),允许插入的 一端称为队尾(rear) ,队列的操作原则是先进先出的,又称作FIFO表(First In First Out) 。队列也有顺序存储和链式存储两种存储结 构。 队列的基本运算有六种: ·置空队:InitQueue(Q) ·判队空:QueueEmpty(Q) ·判队满:QueueFull(Q) ·入队:EnQueue(Q,x) ·出队:DeQueue(Q) ·取队头元素:QueueFront(Q) 顺序队列的"假上溢"现象:由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列是空的却产生了"上溢"现象。 为了克服"假上溢"现象引入循环向量的概念,是把向量空间形成一个头尾相接的环形,这时队列称循环队列。 判定循环队列是空还是满,方法有三种: ·一种是另设一个布尔变量来判断; ·第二种是少用一个元素空间,入队时先测试((rear+1)%m = front)? 满:空; ·第三种就是用一个计数器记录队列中的元素的总数。 队列的链式存储结构称为链队列,一个链队列就是一个操作受限的单链表。为了便于在表尾进行插入(入队)的操作,在表尾增加一个尾指 针,一个链队列就由一个头指针和一个尾指针唯一地确定。链队列不存在队满和上溢的问题。在链队列的出队算法中,要注意当原队中只 有一个结点时,出队后要同进修改头尾指针并使队列变空。
5. c语言中的栈是指什么啊
是一种数据结构.这种结构的存取原则相当于取放盘子的过程,放的时候将盘子一个一个堆起来放,取的时候先取原先最后放入的一个,然后依次类推.即后进先出的原则.
栈有顺序(数组等)和链式(链表)两种存储结构,它的逻辑结构实质是线性表中的一种,只是这种线性表只允许在其中一端进行存取操作.更为详细的解释请参考数据结构一书!
6. C语言中的栈和堆是什么
1、计算机中的内存分为两部分:一部分是栈(stack,也称堆栈),另一部分是堆(heap)。
2、 栈,可以看作是一摞卡片,最上面的卡片表示程序的当前作用域,这往往就是当前正在执行的函数。
3、堆,一段完全独立于当前函数或者栈帧的内存区。如果一个函数中声明了一些变量,而且希望当这个函数完成时其中声明的变量仍然存在,就可以将这些变量置于堆中。
7. C语言中,什么是栈,什么是堆
1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。局部变量,任务线程函数之类的是放在(使用)栈里面的,栈利用率高一些。其操作方式类似于数据结构中的栈。特别,栈是属于线程的,每一个线程会有一个自己的栈。
2、堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存泄漏。注意它和数据结构中的堆是两回事,分配方式倒是类似于链表,常见的就是malloc出来的都是属于堆区,就像固定出来的区域,到free的时候才释放,有点类似全局的,静态的。
(7)c语言的栈是干啥的扩展阅读
栈内存是由编译器自动分配与释放的,它有两种分配方式:静态分配和动态分配。
1、静态分配是由编译器自动完成的,如局部变量的分配(即在一个函数中声明一个int类型的变量i时,编译器就会自动开辟一块内存以存放变量i)。
2、动态分配由alloca函数进行分配,但是栈的动态分配与堆是不同的,它的动态分配是由编译器进行释放,无需任何手工实现。
8. C语言中的栈、堆是什么
C语言中的堆和栈都是一种数据项按序排列的数据结构。
栈就像装数据的桶或箱子
我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。
这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。
堆像一棵倒过来的树
而堆就不同了,堆是一种经过排序的树形数据结构,每个结点都有一个值。
通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同我们在图书馆的书架上取书。
虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,我们可以直接取出我们想要的书。
(8)c语言的栈是干啥的扩展阅读:
关于堆和栈区别的比喻
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
参考资料来源:网络-堆栈
9. 在C语言中,什么叫"栈"
栈是一种数据结构。
栈只允许访问一个数据项即最后插入的数据项:即最后插入的数据项。移出这个数据项之后才能访问倒数第二个插入的数据项,依此类推。即后进先出。放入是一种压栈的过程;取出是一种弹栈的过程,弹栈的时候并删除这个元素。
以我们生活中的桶装薯片的例子可以说明这一点,当厂家在生产薯片的时候,要将薯片一片片的装入食品桶中,这就是一个压栈的过程。最先放的薯片将在食品桶的最底部。最后放的在食品桶的最上面。 当我们买到薯片,打开包装,享受薯片给我们带来的美味时,此时就是一个弹栈的过程,我们只能从最上面开始取出吃掉,然后再取下一片吃,直到将整盒薯片吃完。
10. C语言栈是什么,栈在哪,需要定义吗
栈有两种
一种是操作系统中的
进程栈 或者线程栈 系统自动生成 不需要定义
一种是数据结构中的
需要自己实现。