(67条消息) c语言怎么return ok,C语言中的 return与exit_哈哈哈可以的博客-CSDN博客
假如把i++或++i放入到for循环的函数体中,若没有变量或函数来接收其返回值,那么它们的作用效果也是相同的
(67条消息) C语言的for循环中i++和++i的关系_肥嘟嘟的左卫门的博客-CSDN博客_c语言for循环i++和++i
关于ralloc函数的用法
(67条消息) 【C语言】realloc函数_SouLinya的博客-CSDN博客_realloc
在C语言中,0表示假,非0(不只包括1,还包括2,3,5等只要是非零数字即可)表示真
关于i++和++i
CPU眼里的:i++ 和 ++i_哔哩哔哩_bilibili
i++(后加)的返回值是右值型的,右值的临时变量只能给别人赋值,而且程序员还看不见
所以后加需要分两步走,那为什么前加能一步到位呢,因为前加是左值的,左值意味着可以被直接赋值
一般通常来讲,二者是没有任何区别的,但是构建类对象的时候,后加的劣势就会被无限放大
所以常见类的时候,首选前加运算,大大增快了运算速度
关于return ERROR和return OK 作用的问题-CSDN社区
堆和栈的区别是什么?_哔哩哔哩_bilibili
不同函数之间的栈数据不能共享
多线程中每启用一个函数其实就会调用一个函数,同样也会有各自的栈,线程之间的栈数据也是不能够共享的
而堆是一个进程,只要在这个进程内,所有的线程都可以访问堆上的数据
那什么时候使用堆什么时候使用栈呢?
当数据的size不确定的时候,肯定是用堆不用栈,而当确定的时候,由于效率的问题,一定会使用栈而不用堆,因为他会极大的提高你的运行速度
此外,想使用非常庞大的内存的话,一般不用栈而用堆,用完之后立即释放掉
关于status
(72条消息) 数据结构Status_proveyourself的博客-CSDN博客_status在数据结构中什么意思
注意
int *p;
*(p--)和 *(p-1)之间不同,指针自减改变的是指针的位置,而指针减一指针的位置不变,而是取指针减一所在位置赋值
如何从键盘上依次输入一段文字,并以回车结束,读取并输出
在新元素入队的时候,我们要检查rear指针(尾指针)的后一个元素是否与头指针相等,如果相等,则说明此时队已满。
入队操作
判断队满队空的条件
计算队列元素的个数
以上都是以牺牲一片存储空间为代价的
法二判断:
增加一个size来判断,插入成功则size++,删除成功则size--
当size==Maxsize时,则说明队列已满
如图
虽然队头指针和队尾指针都指向了同一个位置,但是由于我们设置了新的变量size,我们可以通过size来判断队空还是队满
法三:
设置一个tag,当tag=1时,表示进行了以此删除操作,当变量的值为1时,表示进行了一次插入操作
只有删除操作才有可能导致队列变空,只有插入操作才有可能导致队列变满,
如图
当在这个位置时,不管tag的时多少,我们都要插入一个元素,此时tag的值为1,
此时,rear与front重合,所以此时就是队满条件
同理
当然,以上的这些方法,都是基于队尾指针指向队尾元素的下一位,这样的一个前提条件进行的
那当队尾指针是指向队尾元素的情况时
所以为了操作方便,在这种情况时,
先让 rear = n - 1;此时
由于静态数组的容量都是有限的
模运算和取余运算,都是为了重复的利用静态数组中的存储空间
需要注意的是,队尾指针是指向了队尾元素的后一个位置,还是就是指向了队尾元素
链式存储实现的队列被称为链队列
带头结点的队列,要判空,则需要根据头尾结点是否指向同一个位置来判断,当然也可以通过头结点的next指针是否指向NULL来判断队列是否为空
当不带头结点时
rear和front都是指向NULL的,所以插入新元素之后需要改一下
关于括号匹配的问题