数据结构及算法
大唐游子
这个作者很懒,什么都没留下…
展开
-
自引用结构兼谈Malloc和Free函数
<br />原文地址http://www.cnblogs.com/P_awl/archive/2010/04/08/1707852.html<br /> <br />一、自引用结构<br /><br />1、 什么事自引用结构?<br /><br />自引用结构(Self-Referential Structure)是一种特殊的结构。主要特征:一个或多个自身的变量是指向自身的指针。<br /><br />2. 判断几个自引用结构是否合法?<br />struct SELF_REF1{ int A;转载 2010-09-10 11:15:00 · 807 阅读 · 0 评论 -
Data Structures and Algorithm Analysis in C 学习之List
头文件list.h#ifndef _LIST_H#define _LIST_H#define ElementType intstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;List MakeEmpty();int IsEmpty(Lis原创 2015-04-14 23:45:00 · 1692 阅读 · 0 评论 -
Data Structures and Algorithm Analysis in C 学习之List反转
方法1:// problem 3.12.aList Reverse_a(List L){ List TmpL; Position P; P = First(L); TmpL = MakeEmpty(); while ( P != NULL ) { Insert(Retrieve(P), TmpL, TmpL); P = Adv原创 2015-04-14 23:53:15 · 694 阅读 · 0 评论 -
设计模式之代理(Proxy)模式
个人理解代理模式的两个作用:1) 客户端调用接口类时都可以使用代理类来代替:这就要求代理类和接口类有相同的接口,所以代理类继承自接口类;2) 代理类可以动态选择接口类的不同实现方式:代理类包含指向接口类的指针,该指针可以指向接口类不同的子类,不同的子类代表了接口类的不同实现方式。UML图如下:示例代码如下:#include using name原创 2014-03-14 21:43:36 · 819 阅读 · 0 评论 -
快速排序及寻找最小的k个数
快速排序快速排序采用的是分治策略: 在一个list中选择一个基准值(pivot value),将list中比基准值小的元素排在基准值的左侧,比基准值大的元素排在基准值的右侧,形成两个sub-list;然后对sub-list进行同样的操作,直至整个list排序完成。Partition伪代码// pseudocode of Partitionfunction Partitio原创 2014-02-16 16:02:09 · 2405 阅读 · 0 评论 -
快速排序实现
快速排序的原理见http://en.wikipedia.org/wiki/Quicksort快速排序采用分而治之的策略,即partition-sort。先对待排序的序列进行partition操作,即从序列中选择一个基准值(pivot),将序列中的元素与基准值比较,排序(sort)成小于和大于基准值的两个序列;再从两个序列中分别选择新的基准值,对两个序列再进行排序;直至整个序列不能再分,完成总体原创 2012-11-12 23:53:25 · 766 阅读 · 0 评论 -
折半查找
在一个有序数组中查找这样一个数:小于输入参数x的最大值判断依据:if( x > r[middle] )left = middle + 1;elseright = middle - 1;最终的边界条件是 left = right =原创 2011-09-28 22:25:51 · 540 阅读 · 0 评论 -
头插入法反转单链表
建立一个新的结点n,从现存链表中依次取结点插入到n的后面。 template struct Node{ T data; Node *next; //此处也可以省略};template class LinkList{ publ原创 2011-10-11 11:44:04 · 1188 阅读 · 0 评论 -
插入法链表排序
template struct Node{ T data; Node *next; //此处也可以省略};template class LinkList{ public: LinkList( ); //建立只有头结点的空链表 Link原创 2011-09-25 21:12:46 · 1024 阅读 · 0 评论 -
输出N个布尔变量的组合
<br /><br />1、 题目:<br />假设有n个布尔变量x(1)·····x(n),输入其所有可能的真值组合。例如,如果n=2,有四种可能:<true,true>,<true,false>,<false,ture>,<false,false>.编写C语言函数加以实现。<br /> <br />2、 代码:<br />void function(int array[], int n){ if( n < 1 ) return; array[n-1] = 0; functio原创 2010-09-06 11:32:00 · 2360 阅读 · 0 评论 -
binary_search
binary_search感觉写程序最重要的有两点:一、理解算法本身的实现原理和过程;二、理解如何用程序语言将算法过程表达出来。#include <stdio.h>#define N 10int a[N] = {0, 1, 2, 3, 3, 3, 6, 7, 8, 9};int binary_search(int a[], int l, int r, int x){ int i;原创 2015-10-25 00:18:12 · 690 阅读 · 0 评论