数据结构
melody_jae
这个作者很懒,什么都没留下…
展开
-
队列的模拟实现
“排队”在我们日常生活中是经常遇到的,“先来先服务”的原则即排队问题的本质,实际上,在操作系统中,作业调度和输入输出管理都遵循“队列”。在数据结构中,队列是这样定义的:它是一种限定存取位置的线性表,只允许在表的一端插入,在另一端删除,插入的一端叫做队尾,删除的一端叫做队头。 下面就来模拟实现一下“队列,这里采用了链表的方式,源代码如下 #include #include using n原创 2016-11-29 14:39:41 · 760 阅读 · 0 评论 -
带头结点的双向循环链表
DList.h #ifndef __DList_H_ #define __DList_H_ typedef int DataType; typedef struct DListNode { DataType _data; struct DListNode* _pPre; struct DListNode* _pNext; }DListNode; DListNode*BuyDLis...原创 2018-11-22 16:01:02 · 382 阅读 · 0 评论 -
栈
Stack.h #pragma once #define N 3 typedef int SDataType; //动态栈 typedef struct Stack { SDataType*_array; int _capacity;//有效元素的最大个数 int _top;//栈顶 }Stack; void StackInit(Stack*ps);//栈的初始化 void _Che...原创 2018-11-23 22:49:58 · 78 阅读 · 0 评论 -
单链表
SList.h #ifndef __SLIST_H__ #define __SLIST_H__ typedef int SLDataType; typedef struct SListNode { SLDataType _data; struct SListNode*_pNext; }SListNode; void SListInit(SListNode*pList);//初始化 v...原创 2018-11-16 20:15:27 · 116 阅读 · 0 评论 -
动态顺序表
我们对静态顺序表可能比较熟悉,它的定义方式是 struct SeqList { int arr[100]; int _size;//当前存放数据的个数 }; 主要思想就是利用数组可以一次性开辟一整块空间,存放我们想要的数据。从这个结构体的定义,我们可以获得如下信息: 开辟的空间大小为100,(即可以存放100个整型数据),_size记录了当前数组中有效元素的个数,为什么要有这一...原创 2018-11-12 20:10:40 · 383 阅读 · 0 评论 -
二叉搜索树的非递归实现
“折半查找”这个词相信大家在学习C语言的时候已经很熟悉,由于数组中数字的排列是有序的,那么我们就可以将要查找的数字与最中间的数进行比较,每次比较都可以把范围缩小一半,依次下去,很好的提高了查找效率。而在数据结构中,我们也有处理这种问题的对应模型------二叉搜索树(也称为二叉排序树)。 二叉搜索树的性质: (1)每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同 (2原创 2017-01-17 23:55:05 · 531 阅读 · 0 评论 -
对称矩阵的压缩存储
首先来看什么是对称矩阵: 设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 压缩存储指的是:矩阵存储时只需要存储上三角/下三角的数据,所以最多存储n(n+1)/2个数据。 对称矩阵和压缩存储的对应关系:下三角存储i>=j, SymmetricMatrix[i][j] ==arry[i*(i+1)/2+j] 比如下面的例子:原创 2016-12-10 16:08:03 · 1914 阅读 · 0 评论 -
堆的基本操作
Heap.h #ifndef __Heap_H_ #define __Heap_H_ //定义一个函数指针 //typedef int (*PF)(HDataType left, HDataType right); typedef int HDataType; typedef struct Heap { HDataType* _array; int _capacity;//容量 i...原创 2018-11-29 20:50:53 · 124 阅读 · 0 评论