数据结构
xpy123
这个作者很懒,什么都没留下…
展开
-
静态链表
单链表的相对劣势: 单链表的实现严重依赖指针,数据元素中必须包含一个额外的指针域,没有指针的程序设计语言无法实现。 静态链表是在顺序表的基础上利用数组实现的单链表。 头文件: #ifndef _STATICLIST_H_ #define _STATICLIST_H_ typedef void StaticL原创 2015-05-08 09:44:57 · 307 阅读 · 0 评论 -
线性表的链式存储结构
链式存储定义: 为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息。 单链表包括: 表头结点:链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息。 数据结点:链表中代表数据元素的结点,包含指向下一个数据元素的指针和数据元素的信息。 尾结点: 链表中的最后一个数据结点,其下一个元素指针为空,表示无后继原创 2015-05-08 08:30:41 · 294 阅读 · 0 评论 -
线性表线性存储结构
线性表存数结构分为:顺序存储结构和链式存储结构 顺序存储结构: 用一段地址连续的存储单元依次存储线性表中的数据元素。 在C语言中可以用一维数组来实现顺序存储结构。 1、存储空间的起始位置:数组node 2、线性表的最大容量:数组长度 MAXSIZE 3、线性表的当前长度:length #define MAXSIZE 20 typedef struct _tag_list原创 2015-05-07 21:37:59 · 338 阅读 · 0 评论 -
二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
一、基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 满二叉树:所有终端都在同一层次,且非终端结点的度数为2。 在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。 完全二叉树:除了最大的层次即成为一颗满转载 2015-05-13 16:59:26 · 375 阅读 · 0 评论 -
递归的应用实战一
列一: 斐波拉契数列 strlen递归解法 传统解法: int strlen(char* s) { int n = 0; while(*s) { n++; s++; } return n; } 递归解法原创 2015-05-09 11:07:49 · 260 阅读 · 0 评论 -
双链表、链式栈、链式队列 及实现
一、双链表 在单链表的基础上再增加一个指向它前驱的指针,就构成了双链表。 所以双链表有三个变量:数据信息info、前驱指针llink、后继指针rlink。 二、双链表操作和实现 由于双链表也为单链表的一种变型,一些相似的操作就没一一列举,可以参考数据结构(四)——单链表 、带头结点的单链表、循环链表 及其实现 1、转载 2015-05-13 17:00:37 · 329 阅读 · 0 评论 -
单链表 、带头结点的单链表、循环链表 及其实现
一、 链式存储 以结点的形式存储数据。除了存放一个结点的信息外,还需附设指针。 数据在内存中存储是不连续的,每个结点只能也只有它能知道下一个结点的存储位置。 二、单链表 单链表是线性表链式存储的一种,其储存不连续。单链表的数据结构中包含两个变量:数据和指向下一结点的指针。转载 2015-05-13 16:58:01 · 451 阅读 · 0 评论 -
队列定义及实现、循环队列实现
一、队列 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。转载 2015-05-13 16:54:53 · 531 阅读 · 0 评论 -
栈与递归
上面这个函数通过递归实现字符串的逆序输出。原创 2015-05-09 09:21:02 · 281 阅读 · 0 评论 -
栈的应用实战二
原创 2015-05-08 17:54:24 · 287 阅读 · 0 评论 -
栈的应用实战一
小结:原创 2015-05-08 17:42:46 · 327 阅读 · 0 评论 -
栈的定义和实现
栈的顺序结构实现,代码复用----线性表的顺序存储结构----顺序表 栈的链式结构实现----代码复用----单链表原创 2015-05-08 16:35:42 · 345 阅读 · 0 评论 -
循环链表
循环链表的应用: 头文件: #ifndef _CIRCLELIST_H_ #define _CIRCLELIST_H_ typedef void CircleList; typedef struct _tag_CircleListNode CircleListNode; struct _tag_CircleListNode { CircleL原创 2015-05-08 10:52:15 · 290 阅读 · 0 评论 -
双向链表
单链表的局限: 头文件: #ifndef _DLINKLIST_H_ #define _DLINKLIST_H_ typedef void DLinkList; typedef struct _tag_DLinkListNode DLinkListNode; struct _tag_DLinkListNode {原创 2015-05-08 11:04:25 · 291 阅读 · 0 评论