
数据结构
文章平均质量分 88
ili_lii
这个作者很懒,什么都没留下…
展开
-
数据结构(c)——线性表:顺序表和链式表
因为已经大三下学期,准备暑假找实习,以前学得渣,这段时间恶补下基础!!数据结构和算法搞起线性表包括顺序存储和链式存储两种形式。1、顺序表首先定义宏,为线性表分配初始内存空间和再分配用定义结构体,内部定义指针作为线性表的基址,动态分配后就可以用下标访问,跟数组一样,数组a[10],a是指向第一个元素的指针,#define LIST_INIT_SIZE 100 //首次分配的原创 2016-04-16 15:26:34 · 1028 阅读 · 0 评论 -
数据结构(c)——栈
数据结构中栈还是比较常用的,在某些特定情况下非常便利,例如进制转化等。栈又称为后进先出的线性表(LIFO),同样分为顺序栈和链式栈,实现起来顺序栈和顺序表差不多,链式栈和链式队列差不多而且更加简单。顺序栈的实现和顺序表类似,首先定义宏,存储空间初始分配量和每次再分配的增量,以及结构体表示数据结构。#include #include #include //定义原创 2016-04-20 12:41:35 · 719 阅读 · 0 评论 -
数据结构(c)——队列
队列是先进先出(FIFO)的线性表,元素从队尾进从队头出,有的时候也是比较常用的,同样分为顺序存储结构和链式存储结构,其中顺序存储结构可以实现循环队列。1、链式队列首先同样先定义结构体,同样队列应包含有队头指针和队尾指针,分别指向头结点和队尾结点,而指向的结点需有数据域和指向下个结点的指针域:#include #include #include typedef struct Q原创 2016-04-23 23:11:51 · 482 阅读 · 0 评论 -
数据结构(c)——二叉树
二叉树的顺序结构只适用于完全二叉树(与满二叉树的结点编码一一对应的二叉树),否则最坏的情况一个深度为k且只有k个结点的单支树却需要2的k次方-1个单位的存储空间。即二叉树一般用链式结构,链式结构又有二叉链表和三叉链表。不同之处在于三叉链表多了一个指针域保存指向其双亲的指针,当所有空链域都用来保存其他信息如前继或后继,就成了线索链表。二叉链表需要一个值域,分别指向左、右子数的指针,定义如下:原创 2016-04-30 21:14:47 · 646 阅读 · 1 评论 -
数据结构(c)——赫夫曼树与赫夫曼编码
二叉树的一个重要应用——赫夫曼树(最优二叉树),即所有叶子结点的平均带权路径最短。赫夫曼算法叙述如下:(1)根据给定的n个权值{w1,w2,...wn}构成n棵二叉树的集合F={T1,,T2,...,Tn},其中每棵二叉树Ti中只有一个带权为wi的根结点,其左右子树均空;(2)在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树上原创 2016-05-03 20:03:02 · 1601 阅读 · 1 评论 -
数据结构(c)——排序算法
排序是将一个记录的任意序列,重新排列成一个按关键字有序的序列(按非递减或非递增)。排序算法按排序过程中依据的不同原则可以大致分为五类:插入排序、交换排序、选择排序、归并排序、基数排序。下面程序均使无序序列排序成非递减序列。数据结构使用顺序表,并初始化8个元素 [49,38,65,97,76,13,27,49],typedef struct Record{ int key;原创 2016-05-14 13:19:33 · 1027 阅读 · 0 评论