数据结构
文章平均质量分 78
petershina
123
展开
-
双向链表
#include #include struct data{ int link_value;};struct link_node{ struct link_node *p_pre_link; struct link_node *p_next_link; struct data value;};struct link_node *create_node(struct d原创 2015-04-10 14:46:25 · 498 阅读 · 0 评论 -
串操作
#include #include #include #include "string_lib.h"/*拷贝src到dst,dst[0]为src长度*/int str_assign(STRING *dst, char *src){ int i = 0; if(NULL == src) { return -1; } if(dst.string原创 2015-04-10 14:47:23 · 456 阅读 · 0 评论 -
快速排序法
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序原创 2015-04-12 15:34:30 · 666 阅读 · 0 评论 -
KMP算法
转载于:http://blog.csdn.net/v_july_v/article/details/7041827作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下原创 2015-04-07 14:23:41 · 499 阅读 · 0 评论 -
大数的阶乘算法
用data数组来存放阶乘的每一位数字,首先令第一位的数值为1,位数为1,然后将每次相乘的乘积存回数组,并循环处理每个数组中超过10的数,若数值超过10,则需要进位,将位数加1,原来的数除以10,商数加前一位数的数值后存回前一位数的数组中,再将余数存回原来位数的数组中。例如求5!的值步骤一:1!=1位数1数组内容0 0 0 1步骤二:2!=2原创 2015-04-16 09:08:24 · 6206 阅读 · 0 评论 -
插入法排序(含二分法)
插入法排序和冒泡法排序类似,只不过冒泡法排序是每次循环获取i之后最小(大)的值到数组前排,而插入法排序算法是每次对i前面的数组进行从小到大(从大到小)排序。1.插入排序, 从第二个数开始,先将第二个数做一个副本放在一旁(变量中)。2.第二个数同前一个数比较,小于则用前一个数覆盖第二个数, 然后将副本放在前一个数前面3.再将第三个数做一个副本取出,第三个数同前一个数比较,小于则用前一原创 2015-04-12 15:55:00 · 910 阅读 · 0 评论 -
冒泡法排序和选择法排序
冒泡法排序每次比较i前面的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来,这样i前面的数组经过一次次相邻交换,顺序就变成从小到大或从大到小排列。#include /*冒泡法排序*/void sort1(int *digits, int nums){ int i = 0, j = 0, k = 0; int tmp_digit = 0; if(NULL ==原创 2015-04-12 16:17:30 · 1341 阅读 · 0 评论 -
图文详解Radix树
基数树对于长整型数据的映射,如何解决Hash冲突和Hash表大小的设计是一个很头疼的问题。radix树就是针对这种稀疏的长整型数据查找,能快速且节省空间地完成映射。借助于Radix树,我们可以实现对于长整型数据类型的路由。利用radix树可以根据一个长整型(比如一个长ID)快速查找到其对应的对象指针。这比用hash映射来的简单,也更节省空间,使用hash映射hash函数难以设计,不转载 2016-11-23 22:49:55 · 12349 阅读 · 0 评论