- 博客(12)
- 收藏
- 关注
原创 顺序栈、链栈
int LengthLinkStack(linkstack_t* ptop)//用一级指针,是因为我只是求长度,不需要修改main函数中top指针的指向。//7. 获取栈顶数据(注意不是出栈操作,如果出栈,相当于删除了栈顶数据,只是将> 栈顶的数据获取到,不需要移动栈针)//7. 获取栈顶数据(注意不是出栈操作,如果出栈,相当于删除了栈顶数据,只是将栈顶的数据获取到,不需要移动栈针)seqstack_t* CreateEpSeqStack(int len)//len代表的是创建栈的时候的最大长度。
2023-06-06 09:04:52
77
原创 顺序表+单向链表
/(1) 将头节点与当前链表断开,断开前保存头节点的下一个节点,保证后面链表能找得到,定义一个q保存头节点的下一个节点,断开后前面相当于一个空的链表,后面是一个无头的单向链表。void ChangePostSeqList(seqlist_t* p, int post, int data)//post被修改的位置,data修改成的数据。//(2) 遍历无头链表的所有节点,将每一个节点当做新节点插入空链表头节点的下一个节点(每次插入的头节点的下一个节点位置--头插法)//data代表被查找的数据。
2023-06-05 09:30:36
78
原创 c基础面试题汇总
注意,这里的”堆”并不是数据结构中”堆”。1.栈:由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数,局部变量,返回值及函数返回地址。就是指针,因此数组名也是一个指针数组是由多个数组元素组成,元素按其数组类型的不同,所占连续内存的大小也不同。在程序中如果出现了相同的两个变量,一个是局部变量,一个是全局变量,在子函数中。数,静态函数只能在声明它的文件中可见,其他文件不能引用该函数,不同的文件可以使用相同名。数组是保存在一片连续内存单元中的,而数组名就是这片连续内存单元的首地址,内存单元的地址。
2023-06-02 22:12:47
320
原创 顺序队列、链式队列
////////////////////////////////////////链式队列操作//////////////////////////////////////////isEmptyLinkQueue(p))//出列打印的顺序为 1 2 3 4 5 因为先进先出 队列的特点。// front --->2 rear ---> 0,满足rear < front。//(1)定义pdel指向即将被删除的节点就是front指向的节点,if (p->rear >= p->front) {//尾巴大于等于头。
2023-05-30 14:50:25
503
2
原创 数据结构知识点总结(一)
堆上面的空间被用户空间不断的侵蚀,当全部侵蚀完后,malloc再去申请时,就会malloc失败。malloc失败的次数多了后,程序就会被操作系统强行kill,回收掉。是C/C++中比较致命的问题,也是这门语言比较第一无二的特点。其他编程语言都由内存回收机制。其核心是 有分配没有释放 内存分配和释放没有做到匹配。3.内存泄露的原因和危害。内存泄露(C/C++)
2023-05-04 00:08:03
31
原创 数据结构:预备理论知识+ 顺序表(超详细)
程序 = 数据结构 + 算法1.定义:数据结构是指数据与数据之间的逻辑结构、存储结构和运算操作。主要是指数据与数据之间的逻辑物理关系:线性关系:数据与数据之间满足一对一的关系:线性表、栈、队列层次关系(树形关系):数据与数据之间满足一对多的关系:树、二叉树网状关系(图形关系):数据与数据之间满足多对多的关系:图数据在内存当中的存储方式顺序存储:在内存当中开辟一块连续的存储空间链式存储:数据在内存当中不需要开辟一块连续的空间为了让数据与数据之间建立联系,我们把每一个数据称之为结点,结点有两部分组成:数据域和指
2023-05-04 00:07:55
386
原创 c语言基础知识整理
第一个参数表示需要排序的是哪个数组,第二个参数是排序的个数,第三个参数是每个排序的数的字节大小,注意:最后一个参数是进行排序的规则,这个规则需要自己去实现,实际上是一个比较大小的函数,对于不同的数据类型需要将参数值转化为不同的参数,一般常用的写法如下:int compare(const void* a,const void* b)在c语言中,当一个程序员给一个数据类型的变量赋值的时候,有可能会溢出。算法的意义在于提高程序的执行效率,是注重空间的节省,还是注重时间的节省,是写算法时需要考虑的因素。
2023-04-23 12:20:16
137
1
原创 学习数据结构:二叉树
NULL)//只要左子不为空,就入列,之后出列的时候打印。//s 代表的是打印提示, void (*p)(bitree_t *)函数指针 r遍历的树。//s 代表的是打印提示, void (*p)(bitree_t *)函数指针 r遍历的树。//r二叉树根节点的指针。void preOrder(bitree_t* r)//r二叉树根节点的指针。//用来保存二叉树的根节点。if (ch == '#')//输入是'#',代表没有左子或右子。//1.创建一个队列,队列的数据域变成指向树节点的指针。
2023-04-21 17:30:48
55
2
原创 数据结构:单、双链表解决约瑟夫问题
直接上图展示,初始化状态:假设n=6,总共有6个人,k=1,从第一个人开始报数,m=5,每次数五个。第二次报数:从被杀死的五号的下一位开始报数,也就是六号,数五个数,6-1-2-3-4,数数完毕,四号被杀死,第二次报数后,剩余人数如下。第三次报数:从被杀死的四号的下一位开始报数,同样是六号,数五个数,6-1-2-3-6,数数完毕,六号被杀死,第三次报数后,剩余人数如下。第四次报数:从被杀死的六号的下一位开始报数,也就是一号,数五个数,1-2-3-1-2,数数完毕,二号被杀死,第四次报数后,剩余人数如下。
2023-04-21 13:39:13
184
3
原创 数据结构双向链表实现:
/9.删除双向链表中的指定数据 data代表删除所有出现的data数据。//9.删除双向链表中的指定数据 data代表删除所有出现的data数据。//8.修改指定位置的数据,post修改的位置 data被修改的数据。//8.修改指定位置的数据,post修改的位置 data被修改的数据。if (h==p->tail) {//尾。if (post < p->len / 2) {//头。//7.查找指定数据出现的位置 data被查找的数据。//7.查找指定数据出现的位置 data被查找的数据。
2023-04-21 10:36:13
50
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人