- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 函数重载
1、什么是函数重载??? 在同一个作用域中,如果有多个函数的名字相同,但是形参列表不同(参数类型不同或参数个数不同),返回值类型可同也可不同,我们称之为重载函数。重载的函数是通过形参列表区分的,与返回值类型无关。函数重载其实是"一个名字,多种用法"的思想,不仅函数可以重载,运算符也可以重载。例如:现在要实现一个加法运算,运算子可以是整形也可以是浮点型,就可以通过重载实现。intAD
2016-06-27 17:27:58 23378
原创 求相交链表的交点
若链表相交的话,求取他们的交点???首先看看链表相交的情况,如图:解决这个问题的方法很多,下面我们介绍两种常见的方法:方法一: 假设现在是两条不带环的链表相交,如图: 分别统计两条链表的长度s1和s2,假设s1大于s2,则我们让head1先走上s1-s2步,让后再让head2也出发,则它们的相遇点就是交点。
2016-06-26 00:31:34 1359 1
原创 链表相交
判断两个链表是否相交???我们先来分析一下两个链表的相交问题,如图:两条链表都不带环:一条链表带环,一条不带环:两条链表都带环://如果两个链表都不带环int NotCycleCheckCross(pLinkNode head1,pLinkNode head2){ pL
2016-06-25 01:42:36 2906
原创 复制复杂链表
什么是复杂链表??? 如图,这是一个复杂链表,每个结点包含两个指针域,其中next指针域相互连接构成一个单链表,而另一个指针域Sibling则随意指向链表中的任意位置,或者指向NULL。复制复杂链表!!!实现这个问题的方法比较多,下面来介绍三种方法。。方法一: 新建一个头结点,先不考虑Sibling,将整个单链表复制一份。然后寻
2016-06-25 00:58:44 2803
原创 Queue的基本算法
#ifndef __QUEUE_H__#define __QUEUE_H__#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#include#define MAX 4typedef int DataType;typedef struct Queue{ DataType data[MAX]; int fron
2016-06-14 21:10:22 2593
原创 自杀环——约瑟夫环
约瑟夫环是一个数学的应用问题:已知有n个人,编号为1到n,围坐在一张圆桌周围,从第k个人开始报数(从1开始报),将数到m的人剔除出去,接下来的下一个人重新从1开始报数,如此反复进行,问最后一个被剔除的人是谁???假设现在有n个人,从第1个人开始报数,数到m的人被剔除。int check_last_del(int n,int m ){ int i = 1; in
2016-06-11 17:43:07 4098 1
原创 链表高级算法——2
一、判断两个链表是否相交int CheckCross(pLinkList list1, pLinkList list2) //判断链表是否相交{ assert(list1); assert(list2); pLinkNode cur1 = list1->pHead; pLinkNode cur2 = list2->pHead; if ((NULL==list
2016-06-10 17:31:39 2632
原创 寻找单独出现的数——通用技巧
请使用最快的方法,寻找单独出现的数。例1:在一组数据中,只有一个数出现一次,其余数都出现两次,请找出这个单独出现的数。例2:在一组数据中,只有一个数出现一次,其余数都出现三次,请找出这个单独出现的数。例3:在一组数据中,只有一个数出现一次,其余数都出现四次,请找出这个单独出现的数。例4:在一组数据中,只有一个数出现一次,其余数都出现五次,请找出这个单独出现的数。........
2016-06-10 09:28:09 2735
原创 链表高级算法--1
一、链表选择排序void SelectSort(pLinkList list) //选择排序{ assert(list); if (NULL == list->pHead || NULL ==list->pHead->next) //如果是空链表或者只有一个结点则直接结束 { return; } pLinkNode cur = list->p
2016-06-09 18:01:10 4696
原创 链表--基本算法
#ifndef __LINKLIST_H__#define __LINKLIST_H__#define _CRT_SECURE_NO_WARNINGS 1#include#include#includetypedef int DataType;typedef struct LinkNode{ DataType data; struct LinkNode *next;}Link
2016-06-05 00:05:50 5468
原创 排序--SelectSort优化
SelectSort:(以升序为例) 选择排序的基本思想:初始时,有序区为0,每一趟在无序区中选出一个关键字最小的元素,然后与无序区第一个元素交换,然后无序区减1,有序区加1,直到记录全部排完。 直接选择排序:第一趟排序在R[0..n]中选出一个关键字最小的与R[0]交换,第二趟在R[1..n]中选择一个最小的与R[1]进行交换,以此类推直到无序区的记录只剩一个时排序完成。
2016-06-03 19:21:05 3046 2
原创 排序--InsertSort优化
InsertSort:(以升序为例)插入排序的基本思想是: 每次将一个待排的记录,按照其关键字的大小,插入到前面已经排好序的有序区中适当的位置,直到全部记录插入完毕为止。 假设待排序的记录存放在数组R[0..n]中,初始时R[0]是一个有序区,R[1..n]是无序区,从i=1开始,依次将R[i]插入到有序区R[0..i-1]中,生成一个包含n个记录的有序区。
2016-06-03 16:58:59 3331
原创 排序--Bubble的三种优化
BubbleSort 冒泡排序是许多人接触的第一种排序方式,由于这种方式比较简单,所以大部分人也没有深入研究,所以写出的代码是这样的:void BubbleSort(int *arr, int len){ assert(arr); int i = 0; int j = 0; int tmp = 0; for (i = 0; i < len - 1; i++) {
2016-06-01 17:35:07 4217 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人