数据结构
The-third-brother
官方文档直接刚
展开
-
数据结构--队列
文章目录一:循环队列二:链式队列队列的存储结构有顺序存储以及链式存储,在顺序存储中,单向顺序存储容易引发内存假溢出,因此选用循环队列。有关假溢出情形,请参考该博客中《数据结构——队列(queue)》的图形描述,这里不再重复造轮子一:循环队列#include <stdio.h>#include <stdlib.h>#define OK 1#define ERR...原创 2019-03-31 18:48:03 · 109 阅读 · 0 评论 -
双循环链表奇偶位序结点排序
严奶奶的第2.37题:设以带头结点的双向循环链表表示的线性表L=(a1, a2, … an)。试写一个时间复杂度为O(n)的算法 ,将L改造为L=(a1, a3, …, an, … a4, a2)。解题思路:按照正常的思路,我们会把偶数位序的结点从左到右依次插入到尾结点之后。因此,尾结点必须固定,再有一个指向偶数位序结点的遍历结点指针。基本操作即为:取出偶数位序结点,插入尾结点之后,继续相同...原创 2019-06-04 15:48:09 · 701 阅读 · 1 评论 -
顺序栈代码的两种表示方式
在学习顺序栈的初始化过程当中,我模仿了以下代码:/* 初始化顺序栈 */Status InitStack(SqStack *S){ (*S).base = (SElemType_Sq *)malloc(STACK_INIT_SIZE * sizeof(SqStack)); if(!(*S).base) return ERROR; (*S).top = (*S).bas...原创 2019-06-07 12:27:08 · 688 阅读 · 0 评论 -
Xor异或指针双向链表的创建
文章目录一、异或运算的基本知识1. 什么是异或运算2. 运算规则3. 指针异或运算实战二、异或指针双向链表的实现一、异或运算的基本知识1. 什么是异或运算假设二进制数10跟二进制数01进行异或运算的时候,即10 ^ 01,从右往左依次进行运算,相同情况的异或结果为0,否则为1。即0 ^ 1 = 1, 1 ^ 0 = 1,则10 ^ 01 = 112. 运算规则 X⊕X = 0 ...原创 2019-06-01 17:43:55 · 1188 阅读 · 1 评论 -
指针的异或运算
指针是不能直接进行异或运算的,需要将指针转换成整型int或long,在Linux系统下只能是long,因为指针在win系统占4个字节,在Linux系统占6个字节。以下为两个指针的异或运算实现指针的交换: #include <stdio.h> int main() { int *a,*b; unsigned long a...原创 2019-06-01 17:23:29 · 1540 阅读 · 0 评论 -
C语言升序与降序
趣味场景:有一个体育老师上课突然发飙,让体委把班里其他60名同学从矮到高排成一列,人与人间隔半米,也不知道是不是想玩多米诺骨牌。体委又怕老师发飙,只能照办。体委再怎么说也是学过排序的人,于是让所有人先随意排成一列,并且告诉他们:第一个人跟第二个人比较,高的站后面,然后第二个再跟第三个人比较,高的站后面,以此类推;当最高的人站在最后面时,向前边的人传话,让第一个人按照同样的方法继续比较,以此类推。...原创 2019-04-27 17:34:01 · 17813 阅读 · 0 评论 -
Fibonacci序列的C语言实现与应用
温馨提示:以下代码可在https://c.runoob.com/compile/11编译运行,测试结果温馨再提示:实现Fibonacci序列的方法不只有递归一种,其他方法可参考《斐波那契(Fibonacci)数列的七种实现方法》。以下采用递归方式,优点:结构简单,缺点:复杂度高,效率低下。常见算法还有递推算法、矩阵算法,可在拓展中查看文章目录定义场景及实现实现:求k阶Fibonacci序列第m...原创 2019-05-01 16:03:01 · 959 阅读 · 0 评论 -
单链表的逆置
单链表的逆置类似单链表整表创建的头插法,如下图,假设我们要对1链表实现逆置,我们可以将1链表的头结点断开,得到2链表。接下来的操作其实就是运用头插法将元素插入到头结点所在的链表,我们将元素1插入到头结点之后得到3链表,然后再将元素2插入到头结点之后得到4链表,然后再将元素3插入到头结点之后得到5链表,最终实现单链表的逆置。Status Algo(LinkList L){ LinkLi...原创 2019-05-15 20:40:03 · 3542 阅读 · 0 评论 -
合并单链表犯的一个愚蠢至极的问题
算法:合并两个带头结点的单链表,新链表的头结点不重新创建内存思路其实很简单,比如三个链表分别为La,Lb,Lc,合并La和Lb到Lc,将La的头结点作为Lc的头结点,遍历到La的最后一结点,然后将其下一结点指向Lb,最后释放Lb头结点的内存。文章目录错误示例正确示例错误示例然后哒哒哒,我自以为是地很快敲完代码,在点击运行之后静静等待胜利的喜悦。刚放下水杯,程序崩溃。该算法如下:Statu...原创 2019-05-17 16:16:58 · 626 阅读 · 1 评论 -
栈结构实现后缀转前缀
假设存在后缀表达式abcd-*+ef/-,如何只借助栈结构将其转化为前缀表达式?后缀表达式转前缀表达式规则:从左到右扫描后缀表达式:如果是操作数,则直接将其指针压入栈中如果是操作符,则依次弹出两个栈顶指针进行字符串拼接后,再和操作符进行拼接,返回新的指针压入栈中(先弹出的拼接在后弹出的后面,操作符拼接在最前面)直到扫描结束,将栈顶指针弹出,即为前缀表达式字符串的指针我们可以先从...原创 2019-07-17 13:13:10 · 1440 阅读 · 1 评论