加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
113-数据结构-堆栈.c 3.21 KB
一键复制 编辑 原始数据 按行查看 历史
zhangjing 提交于 2020-03-15 22:09 . [Modify]整理完一部分题目
====
4.下列说法错误的是 (BC)[多选]
A.top等于数组的大下标值时则栈满
B.栈不能对输入序列部分或全局起求逆作用
C.top=0 时为空栈,元素进栈时指针 top 不断地减 1
D.利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,这种形式的栈也称为顺序栈
解析:B错误,top= -1时为空栈,top=0只能说明栈中只有一个元素,并且元素进栈时top应该自增。
D错误,栈的特性(先进后出)就决定了可以作为求逆元素的辅助空间。所谓求逆运算就是ABC依次入栈,输入CBA
权重:中
====
8.向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行(D)
A.h->next=s;
B.s->next=h;
C.s->next=h;h->next=s;
D.s->next=h->next;h->next=s;
权重:中
====
22.设栈S和队列Q的初始状态均为空,元素a,b,c,d,e,f,g依次进入栈S。若每个元素出栈后立即进入推列Q,且7个元素出队的顺序是b,d,c,f,e,a,g,则栈S的容量至少是?C
A 1
B 2
C 3
D 4
权重:较高
====
3.HeapStack的差别?
答案:Heap是堆,Stack是栈。
Stack的空间由系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区,malloc函数分配的内存空间即在堆上。
网上经典例子:
int a = 0; //全局初始化区
char *p1; //全局未初始化区
void main(void)
{
int b; //栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //123456\0在常量区,p3在栈上
static int c =0; //全局(静态)初始化区
p1 = (char *)malloc(10); //堆
p2 = (char *)malloc(20); //堆
}
权重:高
====
15、堆和栈的区别
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。
权重:较高
====
2Heapstack的差别。
Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
权重:较高
====
6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。
函数内数组太大超过总大小。
权重:较高
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化