数据结构
文章平均质量分 75
冰糖葫芦五加皮耶
学习永无止境,Fighting!
展开
-
广义表tail和head
根据表头、表尾的定义可知:任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可以是子表,而其表尾必定是子表。也就是说,广义表的head操作,取出的元素是什么,那么结果就是什么。但是tail操作取出的元素外必须加一个表——“ ()“举一个简单的列子:已知广义表LS=((a,b,c),(d,e,f)),如果需要取出这个e这个元素,那么使用tail和head如何将这个取出来。利用上面说的,tail取出来的始终是一个表,即使只有一个简单的一个元素,tail取出来的也是一个表,而head取出来的可以是一原创 2020-08-19 14:49:11 · 1689 阅读 · 0 评论 -
顺序存储的循环队列判空判满判长
顺序存储结构的循环队列假设循环队列的队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度。(1) 入队时队尾指针前进1:(rear+1)%QueueSize(2) 出队时队头指针前进1:(front+1)%QueueSize(3) 队列长度:(rear-front+QueueSize)%QueueSize如现有一循环队列,其队头指针为front,队尾指针为rear;循环队列长度为N。其队内有效长度为?(假设队头不存放数据)答案:(rear-front+N)%N(4转载 2020-08-19 07:33:25 · 2284 阅读 · 0 评论 -
单链表逆序与逆序输出
参考链接这篇文章主要介绍了C语言实现单链表逆序与逆序输出单链表的逆序输出分为两种情况,一种是只逆序输出,实际上不逆序;另一种是把链表逆序。本文就分别实例讲述一下两种方法。具体如下:1.逆序输出实例代码如下:#include<iostream>#include<stack>#include<assert.h>using namespace std;typedef struct node{ int data; node * next;}node;原创 2020-08-05 16:56:55 · 1170 阅读 · 0 评论 -
静态链表相关说明
参考链接定义:用数组描述的链表,即称为静态链表。在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标CUR。优点:这种存储结构,仍需要预先分配一个较大的空间,但在 作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。特点:静态链表中指针表示数组下标或下一个元素的下标。(1)静态链表既有顺序存储的优点,又有动态链表的优点,因为其用游标cur来指示下一个数据元素的存储位置,所以存取数据时静态链表同线性链表(单链表)是相似的。也就是说原创 2020-07-31 16:40:29 · 3151 阅读 · 0 评论 -
关于一维动态数组的创建问题
#include <stdio.h>#include <stdlib.h>int main(){int n1,i;int *array;printf("请输入所要创建的一维动态数组的长度:");scanf("%d",&n1);array=(int*)calloc(n1,sizeof(int));for(i=0;i<n1;i++){ printf("%d\t",array[i]);}printf("\n");for(i=0;i<n1;i+原创 2020-07-23 16:07:46 · 138 阅读 · 0 评论 -
最大堆(创建、删除、插入和堆排序)
最大堆(创建、删除、插入和堆排序)转载 2020-07-23 15:45:31 · 170 阅读 · 0 评论 -
最小生成树-prim与kruskal算法讲解
参考链接前提:构造最小生成树有许多算法,但大多数算法都利用了最小生成树的下列性质: 假设G=(V,E)是一个带权连通无向图,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u€U,v€V-U,则B存在一棵包含边(u,v)的最小生成树。基于该性质的最小生成树算法主要有prim算法和kruskal算法,他们都基于贪心算法的策略。下面介绍一个通用的最小生成树算法:GENERIC_MST(G){ T=NULL; while T未形成一棵生成树; do 找原创 2020-07-17 15:30:35 · 219 阅读 · 0 评论 -
顺序,二分,分块,散列表查找代码与分析
1.顺序查找:从线性表的一端开始,逐个检查关键字是否满足条件。找到则返回成功,没找到,则返回失败2 折半查找3 .分块查找4 哈希表原创 2020-07-11 21:50:43 · 206 阅读 · 0 评论 -
数据结构中的红黑树、B树、B+树
参考链接红黑树是一种自平衡的二叉查找树,是一种高效的查找树。特点:1.每个节点或者是黑色,或者是红色。2.根节点是黑色。3.每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]4.如果一个节点是红色的,则它的子节点必须是黑色的。5.从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。如图:B树B树,Balance Tree,即为平衡树原创 2020-07-06 16:09:34 · 230 阅读 · 0 评论 -
简单模式匹配算法和KMP算法
参见原文简单模式匹配算法经典的模式匹配,是让模式串的首字符从主串的首字符开始向右匹配。匹配的规则是:1.在主串的第i个位置,让pos=i,如果主串pos位置的字符等于模式串的第一个字符,则pos++,再与模式串的第二个字符进行匹配。2.如果又相等则继续向下匹配,直到匹配到模式串的结尾,就说明主串中存在该模式串;如果不相等,则停止匹配,回到主串中,并i++。3.然后再让pos=i,重复上述步骤,直到i到达主串结尾。相应代码如下:#include<stdio.h>#include&原创 2020-07-06 15:57:45 · 2171 阅读 · 1 评论