01 2014 档案
摘要:首先明确优先级队列的两个表象:插入元素删除最小元素能够实现上述两个操作的数据结构-----优先级队列。我们可以使用数组(有序或无序)、单链表、二叉查找树、堆等数据结构来实现。为什么选择堆来实现呢?主要是从时间复杂度来考虑数组(有序):插入操作 O(n) 删除操作 O(1)数组(无序):插入操作 O(1) 删除操作 O(n)单链表:插入操作 O(1)(往表头插) 删除操作 O(n)二叉查找树: 插入操作 O(logn) 删除操作 O(logn)堆 ---- 同二叉查找树 (但二叉查找树对于删除操作来说,因为总是删除左子树,会造成树的不平衡)综上所述,选择最小堆来实现优先级队列实现代码:设数组A[
阅读全文
摘要:// 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]; ...
阅读全文