
数据结构
秋-渡
这个作者很懒,什么都没留下…
展开
-
线性表顺序存储相关操作
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。下面给出关于线性表顺序存储常用操作的代码:#include <stdio.h>#define MAXSIZE 20 //存储空间初始分配量#define true 1#define false 0typedef int ElemType;typedef struct{ Elem...原创 2018-07-25 12:44:54 · 226 阅读 · 0 评论 -
七种排序--------快速排序(Quick Sort)
快速排序的思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。直接看代码:void QuickSort(Sqlist *L){ QSort(L,1,L->length);}因为用到递归,所以把函数封装了了一下。来看QSort()函数:void QSort(S...原创 2018-07-30 14:33:21 · 299 阅读 · 0 评论 -
七种排序--------归并排序(Merging Sort)
归并排序就是利用归并的思想实现的排序方法。他的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2] (整数)个长度为2或1的有序子序列;再两两归并,......,如此重复,直至得到一个长度为n的有序序列为止,这种排序方法称为2路归并排序。先来看代码:void MergeSort(Sqlist *L){ MSort(L->...原创 2018-07-30 11:03:28 · 408 阅读 · 0 评论 -
七种排序--------堆排序(Heap Sort)
堆是具有下列性质的二叉树:每个结点的值都大于或等于其zuo'左右结点的值称为大顶锥;或者每个结点的值都小于或等于其左右孩子的值,称为小顶锥。堆排序就是利用堆进行排序的方法。他的基本思想是,将待排序的序列构造成一个大顶锥。此时整个序列的最大值就是堆顶的结点。将他移走(其实就是将与其堆数组的末尾元素交换,此时末尾元素的值就是最大值),然后将剩下的n - 1个序列的值chon重新构造成大顶锥,这样就...原创 2018-07-21 13:50:32 · 745 阅读 · 0 评论 -
七种排序--------希尔排序(Shell Sort)
希尔排序的基本思想是将距离某个增量的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后的结果是基本有序而不是局部有序。希尔排序算法代码如下:void ShellSort(SqList *L){ int i,j; int increment = L->length; do { increment = increment/3+1; //增量序列 f...原创 2018-07-21 10:01:45 · 441 阅读 · 0 评论 -
七种排序--------直接插入排序(Straight Insertion Sort)
直接插入的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增一的有序表。代码如下:void InsertSort(SqList *L){ int i,j,k; for(i = 2;i <= L->length;i++) { if(L->r[i] < L->r[i - 1]) //需将L->r[i]插入有序子...原创 2018-07-20 20:40:56 · 201 阅读 · 0 评论 -
七种排序--------冒泡排序(Bubble Sort)
冒泡排序是一种交换排序,他的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。首先做一下排序前的准备工作,看如下代码:#define MAXSIZE 10 //用于排序数组个数的最大值,typedef struct{ int r[MAXSIZE]; int length; //数组长度}SqList;void swap(SqLi...原创 2018-07-19 14:33:35 · 847 阅读 · 0 评论 -
七种排序------简单选择排序(Simple Selection Sort)
简单选择排序法就是通过 n - i 次关键字间的比较,从 n - i + 1个记录中选出关键字最小的记录,并和第 i 个记录交换。代码如下:void SelectSort(SqList *L){ int i,j,min,k; for(i = 0;i<(L->length-1);i++) { min = i; /...原创 2018-07-20 13:36:18 · 462 阅读 · 0 评论 -
单链表结构与顺序存储结构的优缺点
存储分配方式: >顺序存储结构用一段连续的存储单元依次存储线性表的数据元素。 >单链表采用顺序存储结构,用一组任意的存储单元存放线性表的元素。时间性能: >查找 >>顺序存储结构O(1) >>单链表O(n) &...原创 2018-07-25 19:44:13 · 911 阅读 · 0 评论 -
链表的相关操作
相关概念:为了表示每个数据元素ai与其直接后继元素a(i+1)之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。然后把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称作指针或链。这两部分信息组成结点。n个结点链结成一个链表,即为线性表的链式存储结构,因为此链表中每个结点zhi只包含一...原创 2018-07-25 19:28:37 · 141 阅读 · 0 评论 -
链表的排序与逆置
链表所用的数据结构为:typedef struct Node{ int data; struct Node* next;}Node;typedef Node* LinkList;返回链表的长度:int LinkLength(LinkList L){ int length = 0;; while(L->next != NULL) { length++;...原创 2018-08-01 07:00:57 · 235 阅读 · 0 评论