C语言实现常用数据结构——图】的更多相关文章

#include<stdio.h> #include<stdlib.h> #define SIZE 20 #define LENGTH(a) (sizeof(a)/sizeof(a[0])) /* * 用链表存弧信息,一个存弧指向的顶点位置,第二存指向下条弧的指针,这样就将一个顶点指向的所有弧串起来 */ typedef struct enode { int v_index; struct enode *next_edge; } enode; /* * 在顶点存顶点名称和第一条依附…
#include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; } node; /*初始化链表: 1.首先给头指针分配空间,将头指针赋给temp 2.其次给每一个元素分配空间 3.将内容赋给当前节点的data,NULL赋给当前节点的next指针 4.把当前节点赋给(头指针)上一个节点的next指针 5.上一节点指针后移,准备初始化下个元素 6.最后返回当前链表的头指针*/…
#include<stdio.h> #include<stdlib.h> #define CAPACITY 20 /*堆有两个性质: * 1.结构性:堆必须是一颗完全二叉树 * 2.堆序性:堆的父节点要么都大于子节点,要么小于子节点,前者叫大顶堆,后者叫小顶堆: * 由此,堆可以用一个数组来表示,并有如下性质: * 1.对于任意i位置的元素,他的左子节点在2i位置,右子节点在2i+1位置: * 2.他的父节点(假如有)在i/2位置*/ /*创建一个小顶堆,size代表的是实际元素的…
#include<stdio.h> #include<stdlib.h> #define SIZE 10 typedef struct Tree { int data; struct Tree *left; struct Tree *right; } tree; int find(tree *t,int x) { ; if(t==NULL) { ; } if(t->data==x) { return i; } else if(x<t->data) { i++; f…
#include<stdio.h> #include<stdlib.h> #define MAX_SIZE 10 /* 用一个动态数组来实现队列 */ typedef struct Queue { int Capacity; int Front; int Rear; int Size; int data[MAX_SIZE]; } Queue; void Error(char *error) { printf("%s",error); } void FatalEr…
#include<stdio.h> #include<stdlib.h> //用链表实现栈 typedef struct Node { int data; struct Node *next; } node; int IsEmpty(node *p) { return p->next==NULL; } node *CreateStack() { node *p=(node*)malloc(sizeof(node)); p->next=NULL; return p; }…
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向列表不再是回环的. HashMap中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些差异, 本文目录结构如下: LinkedList 经典的双链表结构, 适用于乱序插入, 删除. 指定序列操作则性能不如ArrayList, 这也是其数据结构决定的. add(E) / a…
​阅读本文大概需要 3.7 分钟. 作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向列表不再是回环的. HashMap中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些差异, 本文目录结构如下:   LinkedList 经典的双链…
C语言内建数据结构类型 整型 整型数据是最基本的数据类型,不过从整形出发衍生出好几种integer-like数据结构,譬如字符型,短整型,整型,长整型.他们都是最基本的方式来组织的数据结构,一般是几位bytes,首个bit也许是符号位,剩下的(从大小端)读出来作为数值. 浮点型 指针型 [========] C语言聚合数据结构类型 数组 数组名字 数组名字在两种情况下是作为非第一个成员的指针常量,这里的两个情况是取数组名的地址:这是取数组的地址,不是取第一个成员的地址,第二个情况是sizeof的…
在上一篇文章中记录了如何实现图的邻接表.本文借助上一篇文章实现的邻接表来表示一个有向无环图. 1,概述 图的实现与邻接表的实现最大的不同就是,图的实现需要定义一个数据结构来存储所有的顶点以及能够对图进行什么操作,而邻接表的实现重点关注的图中顶点的实现,即怎么定义JAVA类来表示顶点,以及能够对顶点进行什么操作. 为了存储图中所有的顶点,定义了一个Map<key, value>,实际实现为LinkedHashMap<T, VertexInterface<T>>,key 为…