代码改变世界

七大经典排序算法

2013-09-06 10:03 by Keiven_LY, 510 阅读, 0 推荐, 收藏, 编辑
摘要:1、直接插入排序 基本思想:    (1)首先对数组的前两个数据进行从小到大排序;    (2)接着将第3个数据与排好序的两个数进行比较,将第3个数据插入到合适的位置;    (3)然后将第4个数据插入到上述已排好序的前3个数中;    (4)不断重复上述过程,知道将最后一个数据插入到合适的位置,最 阅读全文

二叉排序树的插入、生成、删除及查找操作

2013-09-05 20:56 by Keiven_LY, 619 阅读, 0 推荐, 收藏, 编辑
摘要:二叉排序树的性质:(1)若它的左子树不为空,左子树上所有节点的关键字均小于它的根节点的关键字;(2)若它的右子树不为空,右子树上所有节点的关键字均大于它的根节点的关键字;(3)它的左右子树也均为二叉排序树#include#includetypedef struct node{ int key; struct node *lchild; struct node *rchild;};void InsertBST(struct node **bst,int key){ struct node *s; if(*bst==NULL) { s=(struc... 阅读全文

二分查找(折半查找)

2013-09-04 19:21 by Keiven_LY, 3645 阅读, 0 推荐, 收藏, 编辑
摘要:二分查找又称折半查找,前提要求数据序列呈现线性结构,即必须是经过排序的。基本思路: 在一组有序序列中,取中间值与给定关键字进行比较,如果给定关键字大于该值关键字,则要查找的关键字位于有序序列的后半部分;若给定小于该值,则要查找的关键字位于有序序列的前半部分。每次将有序序列的长度缩小一半之后,再从中间位置的记录进行比较,依次反复进行。查找过程如下:1、查找初始化为low=1、high=length。其中low和high是两个位置指示器,分别指向当前序列的第一个和最后一个值;2、对当前有序序列做如下处理:(1)求当前序列的中间位置:mid=(low+length)/2,mid为中间值的位置指示器; 阅读全文

顺序查找

2013-09-03 21:10 by Keiven_LY, 330 阅读, 0 推荐, 收藏, 编辑
摘要:基本思想:用所给关键字与线性表中各个数据进行逐一比较,直到成功或失败。方法1:对查找数组中的某元素(逐一比较)#include#include#include#define max_len 20#define N 6int SearchFun(int a[],int n,int x) //在给定长度的数组中查找数据元素x{ int i,f=-1; for(i=0;i#include#define max_len 20typedef struct{ int key; char data;}Record;typedef struct{ Record r[max_len... 阅读全文

二叉树的创建、遍历及应用

2013-09-02 16:53 by Keiven_LY, 772 阅读, 0 推荐, 收藏, 编辑
摘要:如图所示的二叉树:#include #include #include #define MAXNODE 10struct node{ char data; struct node *lchild; struct node *rchild;};struct node *CreatBTree() //采用递归法,创建二叉树{ struct node *topNode; //定义1个指向结构体的指针 char ch; ch=getchar(); //getchar函数是从输入缓冲区里读出最开头的那个字符的,然后把最先的那个字符删掉 if(ch=='0'... 阅读全文

(原创)一些常见小程序(C)

2013-08-27 11:19 by Keiven_LY, 516 阅读, 0 推荐, 收藏, 编辑
摘要:1、求一个数的全部素因子(形如60=1*2*2*3*5)#includevoid main(){ int m,n,i=1; printf("请输入一个整数: "); scanf("%d",&m); printf("%d=%d",m,i); for(n=2;nvoid m... 阅读全文

顺序队列

2013-07-12 11:01 by Keiven_LY, 369 阅读, 0 推荐, 收藏, 编辑
摘要:几点说明: 1、队列是线性表的一种特殊情况 2、队列只允许在一端进行插入元素,在另一端删除元素;插入元素的一端称为队尾(rear),删除元素的一端称为队首(front) 3、队列的特点是“先进先出(FIFO)” 4、为便于操作初始化队列时,约定front=rear=-1,即让对头指针与队尾指针均指向数组下标为0的空间的前一个位置,这样当插入或删除元素时,队尾或对头指针均向后移位即可 5、在非空队列中,头指针front总是指向当前对头元素的前一个位置,尾指针rear总是指向当前队尾元素的位置1.序队列的数据结构(C语言描述)如下:#define MAXLEN 10 //定义队列的... 阅读全文

二叉树的创建

2013-06-25 21:16 by Keiven_LY, 443 阅读, 0 推荐, 收藏, 编辑
摘要:二叉树的链式存储结构定义如下:typedef char DataType; //二叉树节点数据类型//二叉树节点的数据结构如下typedef struct node{ DataType data; struct node *lchild; //定义节点左孩子指针 struct node *rchild; //定义节点右孩子指针}BinTNode; 采用递归算法创建二叉树如下:#include #include #include typedef char DataType; //二叉树节点数据类型//二叉树节点的数据结构如下typedef struct node{ ... 阅读全文

合并循环链表A和B

2013-06-09 21:22 by Keiven_LY, 3298 阅读, 0 推荐, 收藏, 编辑
摘要:目的: 将两个用尾指针表示的循环链表A和B合并成一个新的循环链表C思想: 1、将A的尾指针reara指向B的首元节点,同时释放B的头节点的存储空间; 2、将B的尾指针rearb指向A的头节点 3、合并后的链表C的尾指针仍为rearb程序源码:#include#include#includetypedef int elementtype; /* 自定义类型 这里将elementtype定义为int类型 */typedef struct CNode { elementtype data; struct CNode *next; }CNode;CNode *crt_li... 阅读全文

循环单链表的创建

2013-06-08 14:19 by Keiven_LY, 1476 阅读, 0 推荐, 收藏, 编辑
摘要:说明: 循环链表(Circular Linked List,CL)是单链表的一种形式,它是首尾相连的链表,其特点就是将单链表的最后一个节点的指针域由NULL改为指向头节点,就得到了单链形式的循环链表。源码:#include#include#includetypedef int elementtype; /* 自定义类型 这里将elementtype定义为int类型 */typedef struct CNode { elementtype data; struct CNode *next; }CNode;CNode *crt_linklist() /* 创建尾指针表示... 阅读全文
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页