
数据结构
文章平均质量分 91
sooolo
这个作者很懒,什么都没留下…
展开
-
链式存储结构(栈)
S1栈的定义1)栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。2)通常称插入,删除的这一端称为栈顶(top),另一端称为栈底(button)。3)当表中没有元素时称为空栈。4)栈为后进先出(Last In First Out)的线性表,简称:LIFO表。5)栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,转载 2012-09-18 21:55:22 · 747 阅读 · 0 评论 -
字节对齐
用C语言写程序时需要知道是大端模式还是小端模式。所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的ch原创 2013-08-08 22:32:21 · 1775 阅读 · 0 评论 -
双向链表(非循环)
S1双链表定义1)双(向)链表中有两条方向不同的链,即每个节点中除next域存放后继结点地之外,还增加一个指向其直接前驱的指针域prior。2)哨兵节点时隔哑对象,可以简化边界条件。S2双链表前插与删除节点操作1)双向链表的前插操作。(由于双链表的对称性,在双链表中能完成各种插入与删除操作)2)双向链表的删除操作。注意:与单链表上的插入和删除操作不同转载 2012-09-18 21:54:14 · 1334 阅读 · 0 评论 -
双向链表
1. 他访问数据的方式不是数组的下标,而是他的节点的指针来访问。所以他可以更灵活的处理数据见得相关信息。不过他的速度肯定没有数组下标快的,空间也没有数组利用率高,可他的灵活性给了我们很大的方便。我们用链表的时候还是很多的。2. 链表是用指针的指向来访问管理数据的,一个我们把数据存在一个节点里,一个节点包括:nData,节点的数据域,nNext,他指向的下一个指针,nPre他的上一个指针。如果他转载 2012-09-18 21:45:31 · 472 阅读 · 0 评论 -
顺序存储结构(线性表)
S1线性表的基本概念:1)有而且只有一个“第一元素”。2)有而且只有一个“最后元素”。3)除第一元素之外,其他元素都有唯一的直接前驱。4)除最后元素之外,其他元素都有唯一的直接后继。S2计算公式:若第一个元素的地址是a,每个元素占用的存储空间为d,则数组的第i个元素的地址可以用如下公式计算:Loc(i)=a+(i-1)*dS3顺序表元素的插入1)空表转载 2012-09-18 21:58:38 · 790 阅读 · 0 评论 -
存储区
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(转载 2012-09-18 22:01:24 · 954 阅读 · 0 评论 -
堆和栈
联系:都是用来处理变量的内存分配的。主要的区别由以下几点: 1、管理方式不同; 2、空间大小不同; 3、能否产生碎片不同; 4、生长方向不同; 5、分配方式不同; 6、分配效率不同; 管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。 空间转载 2012-08-22 15:29:33 · 531 阅读 · 0 评论 -
顺序存储结构(栈)
S1栈顺序存储结构部分代码转载 2012-09-18 21:56:17 · 612 阅读 · 0 评论 -
链式存储结构(线性表)
S1线性表的链式存储结构特点:1)用任意一组地址任意的存储单元存放线性表中的数据元素。 2)节点:数据域(数据元素的信息)+指针域(指示直接后继存储位置)=节点(表示数据元素或数据元素的映像)3)链表:以“节点的序列”表示线性表称作链表。S2头节点以及头指针1)有时为了操作方便,在第一个节点之前虚加以个“头节点”,以指向头节点的指针为链表的头指针。S3线性表转载 2012-09-18 21:57:21 · 1615 阅读 · 0 评论 -
循环队列
实现队列的方法有很多,比如链表,动态数组等,这里主要介绍一下循环队列,首先我们用静态数组做个简单的队列:从上图很显然可以看出,全部出队后,将无法继续入队,这样的情况也叫做“假溢出”,即使数组中,明明还有空间可以利用,但是却无法使用。为了解决这样的问题,就引入了一个叫“循环队列”这么一个方法。那么什么叫循环队列呢?循环队列定义:为了克服顺序队列中假溢出,通常将一维数组Queue[0]转载 2012-09-18 21:53:20 · 1596 阅读 · 0 评论 -
字节序
大小端:小端:高地址存放高位数,低地址存放低位数,windows,linux,X86CPU大端:高地址存放低位数,低地址存放高位数,UNIX例如: 在WIN、Linux下在内存中的布局如下 : [01][02][03][04] 注意左边是高地址,而右边是低地址 在UNIX下则是 [04][03][02][01] 注意左边是高地址,而右边是低地址原创 2013-08-08 22:27:38 · 913 阅读 · 0 评论