
数据结构
为幸福写歌
热爱编程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表
一、数组与链表的比较数组:优点:存取速度快缺点:需要一个连续的很大的内存 插入和删除元素的效率很低链表:优点:插入删除元素效率高 不需要一个连续的很大的内存缺点:查找某个位置的元素效率低二、链表的结构首节点:存放第一个有效数据的节点尾节点:存放最后一个有效数据的节点头结点:头结点的数据类型和首节点的类型是一样的 头结点并不存放有效数据 ...原创 2016-09-11 20:10:01 · 385 阅读 · 0 评论 -
线性表的链式表示和实现(单链表)
本文是对严蔚敏老师《数据结构》线性表的链式表示和实现这节的算法用C语言的实现,已成功在Linux上运行。 #include #include //函数结果代码 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 1 #define OVERFLOW -1 typedef in原创 2017-10-12 17:08:34 · 536 阅读 · 0 评论 -
线性表的顺序表示和实现
最近想利用空余时间把严蔚敏老师《数据结构》里面的算法用C语言都敲一遍,不知道能坚持多久,总之要努力。 本文是对《数据结构》线性表的顺序表示和实现这节的算法用C语言的实现,已成功在Linux上运行。 线性表的顺序表示的结构和算法就去看严蔚敏老师《数据结构》啦,直接贴代码。 #include #include #define LIST_INIT_SIZE 100 //线性表存储空原创 2017-09-26 17:52:22 · 468 阅读 · 0 评论 -
顺序栈用C语言实现
从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表; 但从数据类型角度来看,它们是和线性表大不相同的两种重要的抽象数据类型。 顺序栈,即栈的顺序存储结构是用一组地址连续的存储单元依次存放自栈顶到栈顶的数据元素 typedef struct { int * base; //栈底指针,在栈构造之前和摧毁之后,base的值原创 2016-10-29 20:25:49 · 449 阅读 · 0 评论 -
静态链表用C语言实现
静态链表便于在不设指针类型的高级语言使用链表结构,静态链表用数组描述,数组的一个分量表示一个结点,同时用游标(指示器cur)代替指针来表示结点在数组中的相对位置。 另外我们对数组第一个和最后一个元素作为特殊元素处理,不存数据。数组的第一个元素,即下标为0的元素的cur存放备用链表的第一个结点的下标,而数组 最后一个cur则存放第一个有效数值的下标,相当于单链表中有结点的作用。 /* 2016原创 2016-10-28 20:13:31 · 582 阅读 · 0 评论 -
对队列的操作和算法
一、队列的定义 队列(queue)是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。 允许插入的一端叫做队尾(rear),允许删除的一端则称为对头(front)。 队列一般也分为两种: 链式队列:用链表实现; 静态队列:用数组实现(静态队列通常都必须是循环队列)。 一般用循环队列比较多,这里也只是讲述循环队列。 二、循环队列需要弄清楚的几个问题 1、静原创 2016-09-19 10:42:01 · 657 阅读 · 0 评论 -
对栈的操作和算法实现
一、栈的定义 从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作都是线性操作的子集,它是操作受限的线性表。 栈(stack)是限定仅在表尾进行插入或删除操作的线性表。 栈一般分为两种: 静态栈:用数组实现; 动态栈:用链表实现。 一般用的比较多的都是动态栈。如果学会了链表,其实对栈的操作就比较简单了。 二、栈的结构 空栈的结构:(其实就是栈顶和栈顶都指向一个不存放有效数据的头原创 2016-09-18 16:47:26 · 1135 阅读 · 0 评论 -
对链表的操作与算法
一、非循环单链表插入节点伪算法 如上图所示,已知有一链表,要想在p所指向的节点的后面插入一个新的节点q,则有两种方法: 伪算法一: t = p->pNext; p->pNext = q; q->pNext = t;伪算法二: q->pNext = p->pNext; p->pNext = q;二、非循环单链表删除节点伪算法 如上图所示,已知有一链表,要想把p所指向的节点的后面原创 2016-09-18 10:13:17 · 671 阅读 · 0 评论 -
对动态数组的操作与算法
直接贴程序: /* 2016年9月12日15:00:49 对动态数组的操作与算法 */ #include #include //malloc函数在此头文件 #include //使用exit函数需要此头文件 struct Array { int len; //数组的长度 int cnt; //数组有效数值的个数 int * pBase; //存储数组第一个元原创 2016-09-12 20:10:40 · 446 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树定义的数据结构typedef struct BiNode { char data; //此处,二叉树中节点值类型为字符型 struct BiNode *lchild,*rchild; //左右孩子节点 }BiNode,*BiTree;二叉树的创建先申请根节点的空间,然后赋值,然后分别递归建立其左子树和右子树,按照先序序列输入构建一棵二叉树//按照先序序列输...转载 2018-07-03 21:25:08 · 230 阅读 · 0 评论