![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
chencangui
公棕号:陈大发随笔,程序员陈师兄、8年大厂程序员经历。csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战
展开
-
冒泡排序
#include void BubbleSort(int k[],int n) { int i,j,temp; int flag = 1; for( i=0; i<n-1; i++) { flag = 0; for(j=n-1; j>i;j--) { if(k[j-1] > k[j]) { temp = k[j-1]; k[j-1] = k[j];原创 2015-03-26 20:36:45 · 437 阅读 · 0 评论 -
LinkHashMap解析
转自http://uule.iteye.com/blog/1522291 1. LinkedHashMap概述: LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。 LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提转载 2015-04-30 16:11:08 · 909 阅读 · 0 评论 -
划分子网
用自己的语言总结一下书本上的内容,更加容易理解一点,也便于复习。 划分子网是从主机号借用若干位作为子网号,于是两级IP地址在自己单位内部就变成了三级IP地址。 子网掩码:为了让数据报到了目的路由器之后能够转发给她的子网。 如果一个网络不划分子网,他还是要使用子网掩码(默认子网掩码),默认子网掩码可以便于查找路由表。 A类地址的默认子网掩码是255.0.0.0 B类地址的默原创 2015-03-22 10:24:53 · 936 阅读 · 0 评论 -
C语言数据结构中链队列细节
近来在做操作系统实验,用到数据结构中的内容,发现之前学的东西没真正弄懂,遇到了一个问题。 在这个存储结构中第一个Queue是什么,第二个又是什么搞不懂, typedef struct Queue { int user; int nun; struct Queue *next; }Queue,*QueuePtr 解释如下:Queue是通过typedef定义的一个声明名 以后你声明这原创 2014-12-16 22:30:45 · 550 阅读 · 0 评论 -
二叉排序树
//二叉排序树又称为二叉查找树,它或者是一棵空树,或者是具有下列性质的二叉树: //若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值。 //若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。 //它的左右字数也分别是二叉排序树 //二叉排序树查找: /* 二叉树的二叉链表结点结构定义 */ typedef struct BiTNode /* 结点结构 */ {原创 2015-03-31 12:16:54 · 701 阅读 · 0 评论 -
有序查找的三种算法
#include int Binary_Search(int *a,int n, int key) { int low,high,mid; low = 0; high = n; while(low<=high) { mid = low +(high-low)*(key-a[low])/(a[high] - a[low]);//插值查找 //mid = (low+high)/2原创 2015-03-27 21:50:46 · 2555 阅读 · 0 评论 -
归并排序(递归实现和迭代实现)
//首先是递归实现的方式#include #define MAXSIZE 10 //实现归并,并把数据都放在list1里面 void merging(int *list1,int list1_size,int *list2,int list2_size) { int i,j,k,m; i = j = k = 0; int temp[MAXSIZE]; while(i<list1原创 2015-03-27 17:55:00 · 21224 阅读 · 4 评论 -
希尔排序
//希尔排序是对直接插入排序的该进,直接插入排序每次的j只增减1, //只要把1改成gap,每次gap=gap/3 + 1;直至gap不大于1,为止,这样的 //原来的直接插入排序就成了希尔排序 #include void InsertSort(int k[],int n) { int i,j,temp; int gap = n; do{ gap = gap/3 + 1; for(i原创 2015-03-26 23:01:30 · 437 阅读 · 0 评论 -
简单选择排序
#include void SelectSort(int k[],int n) { int i,j,min,temp; for(i=0; i<n-1;i++) { min = i; for(j=i+1; j<n; j++) { if(k[j]<k[min]) min = j; } if(min!=i) { temp = k[min];原创 2015-03-26 20:37:22 · 683 阅读 · 0 评论 -
堆排序详解
#include //交换函数 void swap(int k[], int i, int j) { int temp; temp = k[i]; k[i] = k[j]; k[j] = temp; } //对顺序表k进行堆排序 void HeapAdjust(int k[],int s,int n) { int i,temp; temp = k[s]; //之所以从2s开始是因原创 2015-03-27 14:19:45 · 901 阅读 · 0 评论 -
直接插入排序
//从第二个元素开始,跟第一个比较,如果比第一个小,那么将这个 //数用temp保存起来,这个数的下标为i,将j赋值为i-1,在i前面的数 //如果比下标为i的大的话,后移,因为这是i已经保存了(在temp中) //所以不用担心丢失,这样到前面的不符合的为止,最后将temp存回去 #include void InsertSort(int k[],int n) { int i,j,temp;原创 2015-03-26 21:51:08 · 493 阅读 · 0 评论 -
快速排序
快速排序源代码: #include #define MAX_LENGTH_INSERT_SORT 7 void swap(int k[], int low,int high) //交换函数 { int temp; temp = k[low]; k[low] = k[high]; k[high] = temp; } //交换顺序表L中子表的记录,使枢轴记录到位,并返回其原创 2015-03-26 15:57:43 · 625 阅读 · 0 评论