随笔分类 -  算法

摘要:首先明确优先级队列的两个表象:插入元素删除最小元素能够实现上述两个操作的数据结构-----优先级队列。我们可以使用数组(有序或无序)、单链表、二叉查找树、堆等数据结构来实现。为什么选择堆来实现呢?主要是从时间复杂度来考虑数组(有序):插入操作 O(n) 删除操作 O(1)数组(无序):插入操作 O(1) 删除操作 O(n)单链表:插入操作 O(1)(往表头插) 删除操作 O(n)二叉查找树: 插入操作 O(logn) 删除操作 O(logn)堆 ---- 同二叉查找树 (但二叉查找树对于删除操作来说,因为总是删除左子树,会造成树的不平衡)综上所述,选择最小堆来实现优先级队列实现代码:设数组A[ 阅读全文
posted @ 2014-01-12 17:51 挡不住会飞的鸡 阅读(168) 评论(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 挡不住会飞的鸡 阅读(158) 评论(0) 推荐(0)
摘要:strncpy原型: char* strncpy(char* dest,const char* src,size_t count);函数说明: 1、当count <= strlen(src)+1(包括'\0') 逐个将src中count个字符赋予dest,包括'\0' 2、当count > strlen(src)+1时 将src字符(包括'\0')全部赋予dest,不够的补'\0'赋予dest 3、当count的大小超过dest的存储空间,则程序崩溃 #include <iostream>#include 阅读全文
posted @ 2013-04-27 11:50 挡不住会飞的鸡 阅读(253) 评论(0) 推荐(0)