黑皮书之数据结构与算法分析—C语言实现
文章平均质量分 77
ccDLlyy
不忘初心,方得始终
展开
-
最大子段和(分治与动态规划典例)
最大子段和 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n 例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2原创 2016-08-18 20:16:58 · 13893 阅读 · 0 评论 -
线性表的链式实现(单链表)——有独立表头的实现
//定义结构体,以链表中元素为int为例struct node{ int data; struct node *next;};struct node* Insert(struct node*head,int element)//相同的,插到后面{ //findprevious and insert element after the position found;原创 2016-09-06 22:47:51 · 490 阅读 · 0 评论 -
单链表--游标实现
对于一些语言,没有指针,所以用数组是实现链表的一种方式//链表的游标实现//array数组分两部分,一部分为链表部分,有一个独立头节点,下标为1//另一部分为freelist部分,也有独立的一个节点,下标为0,对于此部分,相当于一个栈//进行malloc操作时,从开头(下标0后)取空间//进行free操作时,被free的数放到开头(下标0后)#define MAXN 10str原创 2016-09-10 11:32:02 · 1983 阅读 · 0 评论 -
栈的应用之后缀表达式的计算(同时验证是否为合法的后缀表达式)
//假设运算数和运算符相互之间均有一个空格#include #include double stack[100];//建栈int top=-1;//栈头int isoperator(char data[]){ char temp=data[0]; if(strlen(data)==1&&(temp=='+'||temp=='-')||temp=='*'||temp=='原创 2016-10-01 16:49:11 · 2180 阅读 · 2 评论 -
多项式相乘(英文版数据结构第三章习题)
//编写一个函数,实现多项式相乘,多项式次数分别为M,N//法一://开个结果多项式,次数为MN;以M次数的多项式为基础,每项与N次多项式相乘,再插入结果多项式中,复杂度O(M^2*N^2)//法二://待定 复杂度O(M^2*N)//法三://依次计算结果的MN项,再排序,合并同类项,复杂度为MN+MN*log(MN),简化为O(MN*log(MN))//法四://利用哈希映射原创 2016-10-19 12:16:41 · 634 阅读 · 0 评论