数据结构与算法:C语言实现
主要记录学习数据结构与算法的过程与成果,并用C语言实现了常见的数据结构(数组,链表,队列,串,图,二叉树,算法等)
lpp0900320123
这个作者很懒,什么都没留下…
展开
-
排序算法(1):简单选择排序和堆排序
1.简单选择排序(1)本质:每一趟从给定待排序序列A[ 1......n ] ,选择出第i小元素,并和A[i]交换。代码:/*************************************************算法:简单选择排序(升序)时间复杂度为O(n^2)*************************************************原创 2015-06-07 22:01:35 · 4693 阅读 · 0 评论 -
红黑树系列三:红黑树的删除
一、红黑树定义 红黑树需要满足下面4个条件: 1、每个节点不是红色就是黑色。 2、根节点为黑色。 3、如果节点为红色,其子节点必须为黑色。 4、任意一个节点到到NULL(树尾端)的任何路径,所含之黑色节点数必须相同。二、红黑树的删除对二叉查找树,我们知道删除的结点可能有三种情况:(1)为叶子结点,(2)左子树或右子树有原创 2014-10-11 22:24:01 · 1773 阅读 · 0 评论 -
红黑树系列二:红黑树的插入
一、树的旋转因为红黑树的插入原创 2014-09-26 23:28:50 · 1422 阅读 · 0 评论 -
红黑树系列之一:红黑树的概述
一、红黑树的定义原创 2014-09-24 21:48:40 · 3766 阅读 · 0 评论 -
平衡二叉查找树(AVL)的查找、插入、删除
1.平衡二叉查找树原创 2014-09-18 10:46:20 · 15394 阅读 · 4 评论 -
数据结构:循环队列(C语言实现)
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题;从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列是用链表来实现队列的。这里讲的是循环队列,首先我们必须明白下面几个问题一、循环队列的基础知识1原创 2014-03-07 19:15:06 · 125880 阅读 · 33 评论 -
数据结构:栈的链式实现(C语言描述)
栈本质上是一个线性表,只不过对线性表的操作进行了限制,只可以在表的一端进行操作(插入、删除元素)。栈是一种是一种实现数据“先进后出”的存储结构,分为静态栈和动态栈,静态栈就是以数组的方式存储数据,动态栈是以链表的方式存储数据;对栈的操作算法,常用的就是压栈和出;下面将以链式的方式创建栈,并对用c语言实现栈的压栈和出栈的算法:1.栈的创建 在创建一个数据结构之前,必须知道这种数据结构由原创 2014-03-06 16:37:32 · 14909 阅读 · 3 评论 -
学习心得:链表的操作(C语言实现)
今天将给大家讲述链表的学习心得。学习数据结构,毋庸置疑链表必须学好,后面的栈、队列、树、图都是以链表为基础的;链表的种类很多,有单链表、双链表、循环链表、非循环链表;在此,我们以非循环单链表为例,来讲链表的创建、求长度、排序、插入和排序。1.什么是链表 链表我的理解要包含以下特征:(1).由n个节点离散分配;(2).每个节点通过指针连接(3)每一个节点由一个前驱节点和一个后驱节点(原创 2014-03-03 18:55:52 · 114908 阅读 · 26 评论 -
数据结构:数组的操作(C语言描述)
数据的在计算机的存储方式分为:连续存储【数组】,非连续存储【链表、树、图and so on】;今天讨论的将是数组,包括数组的创建、打印输出,在数组后面追加元素,判断数组是否为空,判断数组是否为满,在数组的指定位置添加元素,在数组的指定位置删除元素,数组元素的倒置和数组元素的排序。对应的函数如下:void Init_arr(struct Array *pArr,int len);//初始化数组原创 2014-02-28 22:29:10 · 13207 阅读 · 2 评论 -
数据结构的概述
1.数据结构数据结构是研究数据元素存储、数据元素之间的关系的存储;因此数据结构可以简化成。 数据结构=数据元素+数据元素之间的关系数据结构一般包含三个方面:(1).数据之间的逻辑关系,是根据实际问题抽象出来的;(2).数据、数据关系的存储,即在计算机内存中表示方式;(3).数据的操作例如:下面以学生的成绩表为例,进行讲述逻辑结构:表的一行代表一个数据元素原创 2014-02-24 22:33:01 · 4391 阅读 · 0 评论