随笔分类 -  数据结构部分

linux学习总结(最短路径dijkstra算法)
摘要:#include <stdio.h>#define N 6#define M 1<<10typedef struct {int pi[N];int end;}pathtype;int main(){ int array[N][N] ={ // v0 v1 v2 v3 v4 v5 /*v0*/ { 0, 20, 15, M, M, M}, /*v1*/ { 2, 0, 4, M, 10, 30}, /*v2*... 阅读全文
posted @ 2012-06-16 17:30 孟浩依然 阅读(385) 评论(0) 推荐(0)
linux学习总结(数据结构之图的遍历)
摘要:图的深度和广度优先算法#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <strings.h>#define N 5#define M 10typedef int datatype;typedef struct { datatype data[M]; int front,rear;}sequeue;sequeue * create(){ sequeue * sq; if((sq = (sequeue *)malloc(sizeof(sequeue)))==NULL) { 阅读全文
posted @ 2012-06-16 14:42 孟浩依然 阅读(411) 评论(0) 推荐(0)
linux学习总结(数据结构——树、二叉树以及遍历)
摘要:二叉树的存储:顺序存储浪费空间。二叉树链式存储结构:typedef int datatype;typedef struct node{ datatype data;struct node *lchild,*rchild;}bitree,*root;二叉树的遍历,由于二叉树的递归性质,遍历算法也是递归的。三种基本的遍历算法如下:先访问树根,再访问左子树,最后访问右子树 先根遍历先访问左子树,再访问树根,最后访问右子树 中根遍历先访问左子树,再访问右子树,最后访问树根 后根遍历。/*********************二叉树***********************/#include &l 阅读全文
posted @ 2012-06-14 22:02 孟浩依然 阅读(447) 评论(0) 推荐(0)
栈和队列的综合运用——球钟趣味游戏代码(初学者)
摘要:队列:顺序存储的队列为了充分利用空间,可以进行循环利用,在笔记上看一下,不写了。队列先进先出,也是一种存储技术,利用队列来实现球钟。球钟描述:球钟是一个利用球的移动来记录时间的简单装置。它有三个可以容纳若干个球的指示器:分钟指示器,五分钟指示器,小时指示器。若分钟指示器中有2个球,五分钟指示器中有6个球,小时指示器中有5个球,则时间为5:32。工作原理:每过一分钟,球钟就会从球队列的队首取出一个球放入分钟指示器,分钟指示器最多可容纳4个球。当放入第五个球时,在分钟指示器的4个球就会按照他们被放入时的相反顺序加入球队列的队尾。而第五个球就会进入五分钟指示器。按此类推,五分钟指示器最多可放11个球 阅读全文
posted @ 2012-06-14 20:57 孟浩依然 阅读(1368) 评论(0) 推荐(0)
linux学习总结(数据结构——栈和队列)
摘要:学习的捷径:多写代码栈:栈是限制在一端进行插入操作和删除操作的线性表,额,又是线性表,那就是说又可以有两种存储方式:顺序栈,链式栈。允许进行操作的一端称为“栈顶”,另一端称为“栈底”。特点:先进先出。所谓的栈和队列,其实是一种技术,有时候需要特殊的存储方式,然后在必要的时候还原该元素,就会利用到栈或者队列,例如在ARM操作的一些裸机代码中,需要保持状态寄存器中的值,根据需要可以利用栈或者队列来存储,用起来很方便安全,所以在涉及到存储数据之类的操作时候,要想到这两个技术。基本运算: 创建空栈:createstack();判断是否空栈 isempty(S);判断满栈isfull(S);进栈:pus 阅读全文
posted @ 2012-06-13 21:10 孟浩依然 阅读(1260) 评论(0) 推荐(0)
linux学习总结(数据结构2-约瑟夫环)
摘要:循环链表,最后的尾指针指到头结点上,双向循环链表就是再加个pre指针。约瑟夫环的问题:设编号分别为:1,2,3,...n的n个人围坐在一圈。约定序号为k(1<=k<=n)的人从1开始计数,数m的那个人出列,他的下一位又开始从1开始计数,数到m的那个人又出列,以此类推,直到所有的人都出列。例如:设 n = 8,k= 3 , m = 4时,出列序列为:6 2 7 4 3 5 1 8算法思路:用一个不带头结点的循环链表来处理Josephu问题:先构成一个有n个节点的单循环链表,然后从第k结点起从1计数,记到m时,对应的结点从链表中删除;然后再从被删除结点的下一个结点起又从1开始计数... 阅读全文
posted @ 2012-06-12 22:22 孟浩依然 阅读(385) 评论(1) 推荐(0)
linux学习总结(数据结构)
摘要:学习总结:linux内核用到很多数据结构的知识,虽然linux是C语言编写,但是里面众多内容是面向对象的思想。所以数据结构的知识很基础,很重要。数据结构指的是数据的逻辑结构和存储结构及其操作:数据的逻辑结构 线性结构 :1.线性表 2.栈 3.队列 非线性结构 :1.顺序存储 2.图形结构数据的存储结构 顺序存储 链式存储数据的运算:检索、排序、插入、删除、修改等先自己写个线性表的操作。以后留着自己看看。顺序存储结构:(其实函数的返回值一定要判断,那么就比较完美啦,linux内核中的函数一般都有返回值,一般的话错误返回-1,正确的如果只是判断的话返回0,所以我觉得自己定... 阅读全文
posted @ 2012-06-12 19:14 孟浩依然 阅读(605) 评论(0) 推荐(0)