• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

尼古拉斯豆

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

随笔分类 -  数据结构与算法分析

数据结构--二叉树
摘要:最重要的二叉树来了.#include <stdio.h>#define STACK_MAX_SIZE 30#define QUEUE_MAX_SIZE 30#ifndef elemType typedef char elemType;#endifstruct BTreeNode{ elemType data; struct BTreeNode *left; struct BTreeNode *right;};/* 1.初始化二叉树*/void initBTree(struct BTreeNode **bt){ *bt = NULL; return; }... 阅读全文

posted @ 2012-07-11 12:15 尼古拉斯豆 阅读(195) 评论(0) 推荐(0)

算法--最大公约数和最小公倍数
摘要:#include <stdio.h>/* 最大公约数和最小公倍数 算法 ***************************** 欧几里德算法: 其方法是用较大的数除以较小的数,上面较小的除数和得出的余数构成新的一对数, 继续做上面的除法,直到出现能够整除的两个数,其中较小的数(即除数)就是最大公约数。 大数 = 公约数 * x = 公约数 * (y + z); 小树 = 公约数 * y; 大数 % 小数 = 公约数 * z; 小数 % 公约数 * z = 公约数 * (y%z); ... 阅读全文

posted @ 2012-07-11 11:21 尼古拉斯豆 阅读(210) 评论(0) 推荐(0)

数据结构--堆--链式存储
摘要:最小数在根节点,一层比一层大的二叉树.#include <stdio.h>typedef int elemType;struct heap{ elemType *heap; int len; int maxsize;};/* 1.c初始化堆*/void initHeap(struct heap *hbt, int ms){ if(ms < 0) { printf("数组长度参数非法.\n"); system("pause"); } hbt->heap = malloc(sizeof(elemType)); ... 阅读全文

posted @ 2012-07-10 09:45 尼古拉斯豆 阅读(280) 评论(0) 推荐(0)

数据结构--串--链式存储
摘要:#include <stdio.h>struct node{ char ch; struct node *next;};/* 1.初始化单链表*/void init(struct Node **h){ *h = (struct node *)mallov(sizeof(struct node)); if(*h == NULL) { printf("空间申请失败...\n"); system("pause"); } (*h)->next = NULL: return; }/* 2.将x节点插入到链表后*/... 阅读全文

posted @ 2012-07-09 15:38 尼古拉斯豆 阅读(242) 评论(0) 推荐(0)

数据结构--队列--链式存储
摘要:队列一般叫优先级队列.这是跟它的相关应用有关的.#include <stdio.h>#include <stdlib.h> typedef int elemType;struct sNode{ /*队列节点*/ elemType data; struct sNode *next;};struct queueLK{ struct sNode *front; /*队列头指针*/ struct sNode *rear; /*队列尾指针*/};/* 1.初始化链队*/void initQueue(struct queueLK *hq)... 阅读全文

posted @ 2012-07-09 15:14 尼古拉斯豆 阅读(178) 评论(0) 推荐(0)

算法--数N的组合方式,由给定的数组元素进行组合--已改进1版
摘要:这是百度面试一道算法题.当时没答上来,主要是思考方式不对.想算法问题的时候一定要按照电脑的逻辑来,不能按照人脑的逻辑顺序来.(主要还是程序练得不够)举个例子:a+b 的逆波兰式为ab+, 这很简单,但是在思考的时候不要先想把+号拿出来,放到后面,要思考,从左到右电脑如何处理才能得出ab+.这样才能写出程序算法.而不是人脑算法.当时的题目是这样的.人民币有 1元 2元 5元 10元 20元 50 元 100元 这几种币值.问:给定200元,求出有多少种币值组合方式. 币种可重复,比如,200张1元的算一种方式.题目很简单,做起来难.程序逻辑就是int a[] = { a1, a2, a3, a4 阅读全文

posted @ 2012-07-05 16:03 尼古拉斯豆 阅读(308) 评论(0) 推荐(0)

算法--逆波兰式(后缀式)
摘要:/****************************************************************************************************************逆波兰式的作用: 对于实现逆波兰式算法,难度并不大,但为什么要将看似简单的中序表达式转换为复杂的逆波兰式? 原因就在于这个简单是相对人类的思维结构来说的,对计算机而言中序表达式是非常复杂的结构。 相对的,逆波兰式在计算机看来却是比较简单易懂的结构。因为计算机普遍采用的内存结构是栈式结构,它执行先进后出的顺序。如:我们平时写a+b,这是中缀表达式,写成后缀表达... 阅读全文

posted @ 2012-07-05 13:46 尼古拉斯豆 阅读(581) 评论(0) 推荐(0)

算法--括号匹配
摘要:这个算法题以前百度面试的时候考过,今天在复习的时候又看到了.就是通过压栈出栈的方式进行匹配的.#include <stdio.h>#include "栈的链式存储.c"/* 遍历整个栈,从底到顶*/void travelStack(struct sNode *hs){ struct sNode *temp = hs; char arr[100]; /*栈的从底到上遍历是个问题,用数组就会固定大小,也许用指针会好些,满了就再realloc一下*/ int i,n =0; while(temp != NULL) { ... 阅读全文

posted @ 2012-07-03 10:45 尼古拉斯豆 阅读(178) 评论(0) 推荐(0)

数据结构--栈--链式存储
摘要:栈的链式存储跟线性表的链式存储一样,只是添加删除数据的方式不同。编译器:GCC#include <stdio.h>typedef int elemType;struct sNode{ elemType data; struct sNode *next;};/* 1.初始化栈为空*/void initStack(struct sNode **hs){ *hs = NULL; return;} /* 2.向链中插入一个元素(入栈) */void push(struct sNode **hs, elemType x){ struct sNode *temp; te... 阅读全文

posted @ 2012-07-02 15:35 尼古拉斯豆 阅读(197) 评论(0) 推荐(0)

数据结构--栈--线性存储
摘要:栈就是后进先出,从代码实现来看跟线性表是一样的,只是进出数据的方式不同。如果要进行复杂操作,内部用线性表的操作方式就可以。编译器:GCC#include <stdio.h>typedef int elemType;struct stack{ elemType *stack; /*存储栈元素的数组指针*/ int top; /*存储栈顶元素的下标位置*/ int maxsize; /*存储stack数组的长度*/}; /* 1.初始化栈s为空*/void initStack(struct stack *s,int ms){ s->... 阅读全文

posted @ 2012-07-02 14:47 尼古拉斯豆 阅读(192) 评论(0) 推荐(0)

数据结构--线性表--链式存储
摘要:跟线性存储一样,我添加了17,18两个函数.不过感觉17不够好,用到了goto.编译器:gcc#include <stdio.h>typedef int elemType;struct sNode{ elemType data; struct sNode *next; };/* 1.初始化线性表,即置线性表的头指针为空 */void initList(struct sNode **hp) { *hp = NULL; return; } /* 2.清楚线性表L中所有元素,即释放单链表L中所有节点,使之成为一个空表 */ void clearLi... 阅读全文

posted @ 2012-06-30 00:55 尼古拉斯豆 阅读(202) 评论(0) 推荐(0)

关于为什么要写数据结构与算法。
摘要:最近准备换工作,去了几个面试。不知道是我去的公司都比较好还是怎么着。都考了数据结构与算法方面的问题。这东西我刚学的时候会,自打工作以后就没用过。数据结构与算法真的是在我的编程中很少用到,应该是我没干过开发的缘故吧。我干的hadoop又用不到这些。所以面试的时候被问住了。每次面试前都要重新看,每次都是这样。面试完以后很郁闷,我工作了1年多了,不会数据结构和算法也照样能搞hadoop啊,照样完成工作啊。后来想想,这是编程的基础,一定程度上体现程序员的编程水平。所以决定重新再温习一下数据结构与算法,印象中是第3次了。这次复习完,记一辈子,再也不回头看了!!因为基础的就那么些东西,链表,二叉树,堆栈, 阅读全文

posted @ 2012-06-29 16:19 尼古拉斯豆 阅读(208) 评论(0) 推荐(0)

数据结构--线性表--线性存储
摘要:前16个是根据网上资料写的。17,18方法是我自己添加的。稍微有点逻辑的也就17,18.一共18个方法基本全部包含了所有线性表的操作。编译器为GCC,支持所有ANSI C标准。#include <stdio.h>typedef int elemType;struct List{ elemType *list; int size; int maxsize;};/* 1.初始化线性表。*/ int initList(struct List *L,int ms){ elemType *p = (elemType *)malloc(ms * sizeof(elemType)); ... 阅读全文

posted @ 2012-06-29 15:59 尼古拉斯豆 阅读(224) 评论(0) 推荐(0)

 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3