数据结构
文章平均质量分 73
小凡0208
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
0/1背包问题
题目 有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 蛮力法: #include #define N 10 void main() { int w[]={7,3,4,5}; int v[]={42,12,40,25}; int i,j,k;原创 2012-10-25 22:54:43 · 797 阅读 · 0 评论 -
链表
这是数据结构与算法分析的具体实现 #include #include"stdio.h" typedef int ElementType; typedef struct Node *PtrToNode; typedef PtrToNode List; typedef PtrToNode Po原创 2012-10-21 22:48:15 · 484 阅读 · 0 评论 -
栈(链表实现)
#include #include typedef int ElementType; struct Node; typedef struct Node *PtrToNode; typedef PtrToNode Stack; struct Node { ElementType Element; PtrToNode Next; }; int IsEmpty(Stack S); S原创 2012-11-09 00:05:00 · 676 阅读 · 0 评论 -
栈(数组实现)
#include #include #define EmptyTOS (-1) #define MinStackSize 5 typedef int ElementType; typedef struct StackRecord { int Capacity; int TopOfStack; ElementType *Array; }*Stack; int IsEmpt原创 2012-11-09 00:06:18 · 458 阅读 · 0 评论 -
链表(游标)
#include #include #define SpaceSize 20 typedef int PtrToNode; typedef PtrToNode List; typedef PtrToNode Position; typedef PtrToNode ElementType; struct Node { ElementType Element; Position Nex原创 2012-11-09 00:01:46 · 1370 阅读 · 0 评论 -
双链表
#include"stdio.h" #include"stdlib.h" typedef int datatype; struct Node { datatype data; struct Node *prior,*next; }; typedef struct Node *List; List MakeEmpty(List L) { if(L==NULL) {原创 2012-11-09 00:02:41 · 481 阅读 · 0 评论 -
尾递归
尾递归 - Tail Recursion, 尾递归,即是递归调用放在方法末尾的递归方式 不用尾递归,函数的堆栈耗用难以估量,需要保存很多中间函数的堆栈。如果有尾部归递,就只需要叠套一个堆栈, 因为计算机只需要将函数的参数改变再重新调用一次。利用尾部递归最主要的目的是要优化。 如阶乘: int TailRecurtion(int num,int n) //尾递归 { if(nu原创 2012-12-06 23:38:03 · 717 阅读 · 0 评论 -
队列(链表实现)
#include #include typedef int ElementType; typedef struct Node { ElementType data; struct Node *next; }*Queue; typedef struct { Queue front; Queue rear; }*LiQueue; int IsEmpty(LiQueue原创 2012-11-09 00:08:05 · 553 阅读 · 0 评论 -
散列(分离链接法)
一. 散列含义 散列:Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息原创 2013-01-02 21:13:30 · 6545 阅读 · 1 评论 -
AVL树
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。 查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 对二叉树的平衡调整过程,主要包含四种旋转操作:LL,LR,RR,RL 。 LR由当前节点左儿子的一次RR旋转和当前节点的一次LL旋转构成。同理,原创 2012-12-19 15:44:02 · 8630 阅读 · 0 评论 -
二叉查找树
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree) 和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉查找树的C 语言实现如下: 分别有三部分:main.c Head.h fun.c 头文件Head.h #ifndef HEAD_H_ #define HEAD原创 2012-12-10 11:41:03 · 813 阅读 · 2 评论 -
队列(数组实现)
#include #include #define MinQueueSize 5 typedef int ElementType ; typedef struct QueueRecord { int Capacity; //域 ,数组最大容量 int Front; //头指针 int Rear; //尾指针 int Size;原创 2012-11-24 00:49:48 · 868 阅读 · 1 评论 -
散列(开放定址法)
一.开放定址法含义: 分离链接散列算法的缺点是需要指针,由于给新单元分配地址需要时间,因此就导致算法的速度多少有些减慢。 所以在这里也可以使用另一种方法:开放定址法。 开放定址法即从发生冲突的那个单元开始,按照一定的次序,从散列表中查找出一个空闲的存储单元, 把发生冲突的待插入元素存入到该单元中的一类处理冲突的方法。 在开放定址法中,因为所有的数都要置入表中,所原创 2013-04-01 21:24:29 · 6200 阅读 · 0 评论 -
优先队列(堆)
一.优先队列涵义 在系统和打印机等处理作业时,通常将它们放到队列中,但是实际中不同的作业的工作量不同,应该允许工作量小的作业优先执行。满足这类应用的队列称为优先队列。 与普通先进先出(FIFO)结构的队列不同,优先队列中元素出队列的顺序由元素的优先级(权重)决定。从优 先队列中删除元素是根据优先权高或低的次序,而不是元素进入队列的次序。 可以使用堆数据结构来实现优先队原创 2013-04-01 21:55:08 · 1075 阅读 · 0 评论
分享