数据结构
melody_jae
这个作者很懒,什么都没留下…
展开
-
队列的模拟实现
“排队”在我们日常生活中是经常遇到的,“先来先服务”的原则即排队问题的本质,实际上,在操作系统中,作业调度和输入输出管理都遵循“队列”。在数据结构中,队列是这样定义的:它是一种限定存取位置的线性表,只允许在表的一端插入,在另一端删除,插入的一端叫做队尾,删除的一端叫做队头。下面就来模拟实现一下“队列,这里采用了链表的方式,源代码如下#include#includeusing n原创 2016-11-29 14:39:41 · 777 阅读 · 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 · 397 阅读 · 0 评论 -
栈
Stack.h#pragma once#define N 3typedef int SDataType;//动态栈typedef struct Stack{ SDataType*_array; int _capacity;//有效元素的最大个数 int _top;//栈顶}Stack;void StackInit(Stack*ps);//栈的初始化void _Che...原创 2018-11-23 22:49:58 · 83 阅读 · 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 · 126 阅读 · 0 评论 -
动态顺序表
我们对静态顺序表可能比较熟悉,它的定义方式是struct SeqList{ int arr[100]; int _size;//当前存放数据的个数};主要思想就是利用数组可以一次性开辟一整块空间,存放我们想要的数据。从这个结构体的定义,我们可以获得如下信息:开辟的空间大小为100,(即可以存放100个整型数据),_size记录了当前数组中有效元素的个数,为什么要有这一...原创 2018-11-12 20:10:40 · 415 阅读 · 0 评论 -
二叉搜索树的非递归实现
“折半查找”这个词相信大家在学习C语言的时候已经很熟悉,由于数组中数字的排列是有序的,那么我们就可以将要查找的数字与最中间的数进行比较,每次比较都可以把范围缩小一半,依次下去,很好的提高了查找效率。而在数据结构中,我们也有处理这种问题的对应模型------二叉搜索树(也称为二叉排序树)。二叉搜索树的性质:(1)每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同(2原创 2017-01-17 23:55:05 · 566 阅读 · 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 · 1980 阅读 · 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 · 133 阅读 · 0 评论