03 2021 档案
摘要:KMP算法利用部分匹配结果避免指针回溯,具体是next数组或者改良后的nextval数组实现; next的实现利用递推的思想,比较抽象,不容易理解。 #include <stdio.h> #include void Get_Next(char* str, int* next) { int len =
阅读全文
摘要:#include<stdlib.h> #include<stdio.h> void Move(char now, int a, char next) { printf("%d:%c->%c\n", a, now, next); } void Hanoi(int n, char x, char y,
阅读全文
摘要:三栈顺序问题,一个栈顶是1,栈底是n的一个长度为n的正整数栈,有两个空栈,通过一个过渡栈,可在另一个空栈从底到顶数有不同排列,如1234可转成2143,不过不是所有的排序都合法,4123就是非法序列,现在可以判断输入序列哪个是合法,哪个不合法。 从数学角度分析,设min,mid,max是任意从小到大
阅读全文
摘要:栈是比较简单的数据结构,这里简单列举了栈的几项常见功能,并且有栈的实际应用 具体包括进制转换/括号匹配是否合法/编辑文档的回退与清行/中缀表达式转后缀表达式 这些都是常见应用,表达式转换只是处理了加减乘除以及指数运算符,更复杂的运算符程序需要进行较大改动。 注意在定义栈的类型,不同的应用ElemTy
阅读全文
摘要:在一个链表里使用两个指针,可以实现一些操作 如寻找链表中倒数第K个结点,寻找中间位置结点,判断链表有没有环,以及如何找到环的入口 #include <stdio.h> #include<stdlib.h> typedef struct Node { int Data; struct Node* PN
阅读全文
摘要:快速删除一个结点,常规删结点要找到前一个结点,如果给出这个结点的指针,可以采取拷贝下一个结点内容,释放下一个结点 单链表的倒序反转,只需将p指向的结点不断挂到头结点,将p不断向下移动即可 #include <stdio.h> #include<stdlib.h> typedef struct Nod
阅读全文
摘要:多项式相加有很多种实现方法。 不怕浪费空间的可以用数组,数组下标当作指数; 结构可以同时存储指数和系数,但要开辟新的空间存放比较后相加的结果; 链表可以和结构一样使用,开辟新链表,不断释放旧的链表; 这里介绍一种直接利用两个链表的结点,以一个链表为基准,将另外一个链表的结点选择性加入,同时释放系数为
阅读全文
摘要:循环链表即最后一个结点的next指针指向头结点,判断遍历是否结束的条件也变成了是否回到了头结点或者下一个就是头结点. 使用循环链表可以找到前驱,但没有双向链表方便 #include <stdio.h> #include<stdlib.h> typedef long ElemType; #define
阅读全文
摘要:#include <stdio.h> #include<stdlib.h> typedef long ElemType; #define ERROR 0 #define OK 1 typedef struct Node { ElemType Data; struct Node* PNext; }No
阅读全文

浙公网安备 33010602011771号