01 2014 档案

摘要:首先明确优先级队列的两个表象:插入元素删除最小元素能够实现上述两个操作的数据结构-----优先级队列。我们可以使用数组(有序或无序)、单链表、二叉查找树、堆等数据结构来实现。为什么选择堆来实现呢?主要是从时间复杂度来考虑数组(有序):插入操作 O(n) 删除操作 O(1)数组(无序):插入操作 O(1) 删除操作 O(n)单链表:插入操作 O(1)(往表头插) 删除操作 O(n)二叉查找树: 插入操作 O(logn) 删除操作 O(logn)堆 ---- 同二叉查找树 (但二叉查找树对于删除操作来说,因为总是删除左子树,会造成树的不平衡)综上所述,选择最小堆来实现优先级队列实现代码:设数组A[ 阅读全文
posted @ 2014-01-12 17:51 挡不住会飞的鸡 阅读(159) 评论(0) 推荐(0) 编辑
摘要:// 1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include #include #include typedef struct node{ int data; struct node* next;}Link;//链表的建立--无头结点int create(Link* &L,int A[],int n){ //尾插法 int i = 0; L = (Link*)malloc(sizeof(Link)); L->data = A[0]; ... 阅读全文
posted @ 2014-01-01 12:01 挡不住会飞的鸡 阅读(151) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示