数据结构
王伴农
就职于国内某知名互联网企业,网站后端开发
展开
-
跟我学数据结构-- 线性表的链式存储结构
链式存储定义为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息。表头结点 链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息。数据结点 链表中代表数据元素的结点,包含指向下一个数据元素的指针和数据元素的信息。尾结点 链表中的最后一个数据结点,其下一元素指针为空,表示原创 2013-10-04 15:20:22 · 738 阅读 · 0 评论 -
百度最新面试题集锦
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/73489681、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n转载 2014-04-16 10:40:53 · 714 阅读 · 0 评论 -
用C++的类和结构体DIY静态链表及其接口函数
用C++的类和结构体DIY静态链表原创 2014-03-23 19:37:20 · 1198 阅读 · 0 评论 -
线性表的链式存储及其接口函数C++类实现
线性表的链式存储及其接口函数C++类实现原创 2014-03-23 20:00:38 · 1779 阅读 · 0 评论 -
写的很好 链表的各种题目整理(C语言实现)
这里处理的全部是单链表:typedef struct node { char *data; struct node *next; } node_t;我们约定一个打印链表的函数:void list_display(node_t *head){ for (; head; head = head->next) printf("%s转载 2014-04-03 21:25:13 · 8038 阅读 · 0 评论 -
常用排序算法总结
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。当待排序记录的关键字都不相同时,排序结果是惟一的,否则排序结果不惟一。在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。要注意的是,排序算法的稳定性是针对所有输入实例而言转载 2014-04-03 21:29:32 · 674 阅读 · 0 评论 -
数据结构之图(存储结构、遍历)
一、图的存储结构1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图。 从上面可以看出,无向图的边数组是一个对称矩阵。所谓对称转载 2014-04-08 13:18:08 · 1099 阅读 · 0 评论 -
台阶问题
台阶问题原创 2014-04-11 15:07:05 · 946 阅读 · 0 评论 -
逆向打印链表
递归实现,很简单,直接贴代码原创 2014-08-21 10:54:51 · 623 阅读 · 0 评论 -
双向链表的C++实现
转载注明出处http://blog.csdn.net/hongkangwl/article/details/22286469首先定义节点的结构struct node { int date; node* prev; node* next;};老样子,建立双链表的类class doublelink{public: int doublelink_in原创 2014-03-27 14:26:01 · 19882 阅读 · 1 评论 -
用双链表封装的栈的实现
上一篇文章http://blog.csdn.net/hongkangwl/article/details/22286469中用C++实现了双向链表了,下面我们对其封装,得到栈~~、我们用链表的插入和删除模仿pop和push完整代码如下:#include using namespace std;struct node { int date; node* prev; nod原创 2014-03-27 14:34:13 · 940 阅读 · 0 评论 -
linux内核链表分析
linux内核的链表一般都是双向循环链表,双向循环链表的效率是最高的,找头节点,尾节点,直接前驱,直接后继时间复杂度都是O(1),而使用单链表,单向循环链表或其他形式的链表是不能完成的。 linux内核链表最大特点就是它的通用性,不必因为结构体中的数据域的不通而单独为操作链表设计一套方案. linux内核在linux/list.h文件中定义了内核通用链表list_head类原创 2013-09-29 17:03:50 · 800 阅读 · 0 评论 -
跟我学数据结构--线性表的顺序存储
顺序存储定义线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。线性表的一些常用操作1 创建线性表2 销毁线性表3 清空线性表4 将元素插入线性表5 将元素从线性表中删除6 获取线性表中某个位置的元素7 获取线性表的长度用如下一个柔性数组来实现顺序存储结构typedef struct tag_seqlis原创 2013-10-04 14:06:17 · 843 阅读 · 0 评论 -
#define 和 typedef的区别
最近看linux数据结构,对于大范围使用typedef很不适应,上网查资料,发现好多的错误,特此更正下,有错的话请轻喷。#define宏常量只是简单的进行值替换,枚举常量是真正意义上的常量#define宏常量无法被调试,枚举常量可以#define宏常量无类型信息,枚举常量是一种特定类型的常量typedef用于给一个已经存在的数据类型重命名typedef并没有产生新的原创 2013-09-29 15:39:44 · 834 阅读 · 0 评论 -
数据结构之顺序队列
队列是一种特殊的线性表队列仅在线性表的两端进行操作队头(Front):取出数据元素的一端队尾(Rear):插入数据元素的一端队列不允许在中间部位进行操作!1、顺序队列 (1)顺序队列的定义 队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表。(2) 顺序队列的表示 ①和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。原创 2013-12-02 15:29:11 · 821 阅读 · 0 评论 -
几种经典的数据排序及其Java实现
选择排序 冒泡法 插入排序 希尔排序 快速排序 归并排序原创 2013-12-02 21:43:46 · 2951 阅读 · 0 评论 -
轻松搞定面试中的二叉树题目
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。转载 2014-03-10 13:26:42 · 617 阅读 · 0 评论 -
循环链表及其接口函数的C++实现
转载请注明出处:http://blog.csdn.net/hongkangwl/article/details/22284249首先建立节点的结构体struct node{ int date; node* ptrnext;};然后在循环链表的类中声明需要的成员和方法class circlelinklist{private: int le原创 2014-03-27 14:01:28 · 1467 阅读 · 0 评论 -
中缀表达式转后缀表达式C++代码
[cpp] view plaincopy//MyStack.h #include using namespace std; template class ElemType> class MyStack { public: const static int MAXSIZE =100; ElemType data[MAXSIZE];转载 2014-03-27 15:20:06 · 1496 阅读 · 0 评论 -
快速排序简单实现
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。 虽然快速排序称为分治法,但分原创 2014-08-21 13:57:49 · 864 阅读 · 0 评论