
C语言数据结构
文章平均质量分 78
yelloworange
怯懦中的狂徒,总是在摇摇摆摆中前进,就像一只候鸟,等待飞翔,等待...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构-串的复习
先简单介绍一下串,其实串就是我们一般所说字符串,是由多个字符组成的有限序列,‘aasddsfasdggsa',就是一个字符串,串的逻辑结构和线性表很类似,仅仅是串的数据对象限制为字符,然而,串的操作与线性表差别很大,串,想象也知道,是对一串字符操作,而线性表,大都对一个,单个字符进行插入,查询,查找的操作。下面我将定义串的类型,其实平常我们用数组存储一段字符,就是串的存储,不过我们重新定义了typedef unsigned char SString[Maxsize+1];Maxsize为最大长度,可任意定义原创 2011-05-15 23:04:00 · 1179 阅读 · 2 评论 -
Peterson算法(软件实现互斥)
Peterson算法如下:Peterson提出了简单且一流的方法。 和以前一样,全局数组变量flag表明每个互斥进程的位置,全局变量turn解决同时发生的冲突。boolean flag[2];int turn;void P0(){ while(true) { flag[0]=true; turn=1; while转载 2012-06-08 18:07:08 · 5058 阅读 · 1 评论 -
程序员必知8大排序3大查找(3)
三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表(以后谈)一、顺序查找的基本思想:从表的一端开始,顺序扫描表,依次将扫描到的结点关键字和给定值(假定为a)相比较,若当前结点关键字与a相等,则查找成功;若扫描结束后,仍未找到关键字等于a的结点,则查找失败。 说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到转载 2012-05-17 23:19:05 · 744 阅读 · 0 评论 -
程序员必知8大排序3大查找
每天都在叫嚣自己会什么技术,什么框架,可否意识到你每天都在被这些新名词、新技术所迷惑,.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。 要编写出优秀的代码同样要扎实的基础,如转载 2012-05-17 23:17:26 · 507 阅读 · 0 评论 -
程序员必知8大排序3大查找(2)
本文我们先把剩余的三大排序说完,然后讨论一下排序的稳定性问题,最后再总结一下排序的时间复杂度和空间复杂度。(1到5见上篇)6、快速排序 (1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。转载 2012-05-17 23:18:18 · 509 阅读 · 0 评论 -
Linux信号量机制(生产者消费者)
该程序为Linux信号量机制实现程序,主要模拟了一般的生产者-消费者问题。(生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等原创 2012-05-14 23:08:49 · 12713 阅读 · 0 评论 -
Linux信号量机制
1 需求说明1.1 基本需求目标:本次实验的目标是在Linux环境下实现一个多线程对临界资源的互斥操作,利用信号量实现对临界资源的保护,支持Linux下文件输入输出,提高对Linux环境下多进程、多线程、信号量机制和文件操作等知识的理解。问题描述:设有进程A、B、C,分别调用过程get、copy、put对缓冲区S和T进行操作。其中get负责从文件F_in中把数据块读入并输出缓冲原创 2012-05-14 23:11:32 · 6157 阅读 · 1 评论 -
如何判断送入函数的是静态分配还是动态分配的数组
问:如果你要为客户写一个函数(软件开发客户),该函数用来处理一个数组入口是这样的void test(int *p)在函数中将要对该数组进行操作,情况有2种:1 送入的数组是静态分配的2 送入的数组是动态分配(如MALLOC)的那如何去判断这两种分配情况呢wanguodu(足文字D)的答案:不谦虚的说,我觉得我已经给出了答案。 至于说,用_m转载 2012-05-13 23:22:56 · 1001 阅读 · 0 评论 -
冒泡排序+二分搜索
#include#includevoid sort(int *,int);//排序函数void exchange(int,int);//交换函数void find(int *,int,int);//查找函数void main(){ int num[]={11,56,76,34,67,32,12,67,90,4}; for(int i=0;i<10;i++){ printf("%原创 2012-05-13 22:55:49 · 578 阅读 · 0 评论 -
堆栈,堆栈,堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2012-05-08 22:30:52 · 667 阅读 · 0 评论 -
数据结构:图
首先,图的概念大家应该都有,我就不多说了,下面主要介绍下处理图的数据的主要方法。1,首先,就是存储图,有两种方法邻接矩阵typedef struct{ char vex[size];//顶点 double arcs[size][size];//邻接矩阵,存储相邻关系,有必要的话还会存储相邻距离}graph; 邻接表typedef struct{ char v原创 2011-06-25 23:48:00 · 590 阅读 · 0 评论 -
二叉树(2)
这几天比较萎.....没什么激情,今天终于回复了....继续更新,上次写到二叉树的构造和先序遍历,今天先说下用先序遍历和中序遍历的结果恢复二叉树,代码注释写的很详细,看代码吧#define datatype int#define maxsize 100typedef struct node{ datatype data; struct node *lchild; str原创 2011-06-06 21:31:00 · 364 阅读 · 0 评论 -
树与二叉树(1)
树与二叉树在实际中是用的比较多的数据结构,也比较复杂,具体树与二叉树的定义我在这里就不赘述了,只要薛果果数据结构或者你上网搜一下就知道他的定义,在这里我主要是对其操作还有代码做出叙述,不过要理解怎么建立树与二叉树,你必须要知道什么是树,不知道的话一定要先查查,不要贸然看代码,OK,首先我给出二叉树的构造代码,递归完成,和非递归完成的,请看看这两种代码有什么相同或不同之处,其中非递归的代码较好理解。 typedef struct node{ char data; struct node *lchil原创 2011-05-19 22:41:00 · 557 阅读 · 0 评论 -
研究数组
不用说,基本上只要学习过一点编程知识的都知道数组是一种非常非常常见的数据类型,几乎所有的程序设计语言都将数组设计成固定不变的数据类型。一般有一维数组,直至n维数组,一个n维数组中含b个数据元素,每个数据元素的类型完全相同,他们受着n个关系的约束,每个数组都有相应的下表,其存储有些类似一个线性表,虽然线性但还是顺序存储的,我们可以把它理解成一个定长的线性表,数组的特点是一旦被定义,内存分配空间,他的维数好数组元素个数都不再改变,除了数据结构的初始化和销毁,数组只存在存取元素,和修改元素等操作。ok,在看代原创 2011-05-16 17:43:00 · 708 阅读 · 0 评论 -
矩阵的数据存储
一般来说,用二维数组来存储矩阵,但如果出现一些阶数很高的矩阵,或者矩阵中有很多是零元素,为了压缩存储空间可以对矩阵进行压缩存储,一般有两种矩阵可以压缩存储,一种是对称矩阵,对称矩阵,顾名思义,矩阵中元素关于对角对称,因此只需要存储一半即可,所以只要一维数组,对i行j列的元素,可以通过计算得到数据下标,即可得出其值,至于计算公式,自己推一下,很好得出,第二种,就是稀疏矩阵,也就是那种有很多相同数据都为0的数组,我们着重讨论的也是这个,那么如何对矩阵存储呢?下面过我给出一种存储方法#define Max 100原创 2011-05-17 22:23:00 · 3696 阅读 · 0 评论 -
研究数组(2)
ok,上一部分定义了数组,下面对数组进行操作,首先是初始化数组,然后是销毁数组,自后是定位数组元素地址,其他操作都没什么意义,如果需要的可以自己写一下void InitArray(Array &A,int dim){ int elemtotal; int i; if(dimMAX_ARRAY_DIM) exit(0); A.dim=dim; A.bound=(int *)malloc(dim*sizeof(int)); if(!A.bound) exit(0); //原创 2011-05-17 00:09:00 · 532 阅读 · 0 评论 -
STL容器类简介
一.标准C++库字符串类std::string的用法#includestd::string s1;std::string s3(s2);std::string s2("this is a string");begin 得到指向字符串开头的Iteratorend 得到指向字符串结尾的Iteratorrbegin 得到指向反向字符串开头的Iteratorrend 得到指向反向字符串结尾的Iteratorsize 得到字符串的大小length()转载 2011-05-15 00:59:00 · 513 阅读 · 0 评论