All DataStructure

来源:互联网 发布:c语言怎么自定义函数 编辑:程序博客网 时间:2024/05/16 11:46
/* * all structure difinition  *//* 顺序表 */typedef struct {ELEM_TYPE data[100];int length;} sqlist;/* 单链表 */typedef struct lnode {ELEM_TYPE data;struct lnode *next;} lnode, *linklist;/* 双链表 */typedef struct dulnode {ELEM_TYPE data;struct dulnode *prior;struct dulnode *next;} dulnode, dulinklist;/* 静态链表 */typedef struct {ELEM_TYPE data;int cur;/* simulate pointer */} component, slinklist[MAXSIZE];/* 顺序栈 */typedef struct {ELEM_TYPE data[MAXSTACK];int top;} sqstack;/* 顺序循环队列 */typedef struct {ELEM_TYPE data[SEQSIZE];int front;int rear;} sqQunue;/* 注意判断队列空,满 *//* 链式队列(不需要循环了) */typedef struct qnode {/* 节点定义 */ELEM_TYPE data;struct qnode *next;} Qnode, *Qlink;typedef struct {/* 关系定义 */Qlink front;Qlink rear;} *linkqueue;/* 数组:矩阵压缩存储 *//* 1.三元组 */typedef struct {/* 节点存储 */int i,j;/* 矩阵坐标 */ELEM_TYPE data;} Triple;typedef struct {Triple data[MAXSIZE];int mu, nu, tu;/* 未压缩的行,列,非零元 */} TSMatrix;/* 关系定义 *//* 2.行逻辑链接的顺序表 */typedef struct {int i,j;ELEM_TYPE data;} Triple;typedef struct {Triple data[MAXSIZE];int rpos[MAXRC];/* 每行第一个非0元,记录data数组中的下标号 */int mu, nu, tu;} RLSMatrix;/* 3.十字链表 */typedef struct OLnode{/* 节点 */int i,j;ELEM_TYPE data;struct OLnode *right, *down;}OLNode, *OLink;typedef struct {/* 关系 */OLink *rhead, *chead;/* 第1行,第1列头指针 */int mu,nu,tu;} CrossList;/* 树的双亲表示法 */typedef struct PTNode {ELEM_TYPE data;int parent;} PT;typedef struct {PT nodes[MAX_TREE_SIZE];int r,n;/* 根节点和节点总数 */} PTree;/* 树的孩子链表 表示法 */typedef struct CTNode {/* 关系 */int child;/* 在数组中的下标 */struct CTNode *next;} *ChildPtr;typedef struct CTParent {/* 双亲节点 */ELEM_TYPE data;ChildPtr firstchild;} CTParent;typedef struct {/* 树结构 */CTParent nodes[MAX_NODE_SIZE];int n,r;/* 节点总数和根位置 */} CTree;/* 树的孩子兄弟 表示法 */typedef struct CSNode {ELEM_TYPE data;struct CSNode *firstchild, *nextsibling;/* 左孩子,右兄弟 */} CSNode, *CSTree;/* 二叉树,二叉链表 */typedef struct BiTNode {ELEM_TYPE data;struct BiTNode *lchild, *rchild;} BiTNode, *BiTree;/* 二叉树, 三叉链表 */typedef struct BTTNode {ELEM_TYPE data;struct BTTNode *lchild, *rchild, *parent;} BTTNode, *BTTNode;/* 图 数组邻接矩阵 */typedef struct ArcCell {/* 边的结构 */VRType arcs;/* 相连 1, 不相连 0*/InfoType *info;/* 边本身可能的信息 */} ArcCell, AdjMatrix[MAX_VERTEX_NUM][MAX_VER_TEX_NUM];typedef struct {/* 图的结构 */VertexType vex[MAX_VERTEX_NUM];/* 本身顶点存储的信息 */AdjMatrix arcs;/* 顶点之间关系 */int vexnum, arcnum;/* 顶点数和弧数 */GraphKind kind;/* 图的种类标志 */} MGraph;/* 图 邻接表 存储表示*/typedef struct ArcNode {/* 存储边的情况 */int adjvex;/* 指示顶点在该顶点数组中的下标 */struct ArcNode *nextarc;/* 跟此顶点相连的边 */Infotype *info;/* 记录弧本身的信息,如权值 */} ArcNode;typedef struc VNode {/* 顶点结构 */VertexType data;/* 顶点信息 */ArcNode *firstarc;/* 第一条弧 */} VNode, AdjList[MAX_VERTEX_NUM];typedef struct {/* 图的结构 */AdjList vertices;/* 图中顶点 */int vexnum, arcnum;/* 顶点数和弧数 */in kind;/* 图的标志 */} ALGraph;/* 有向图 十字链表 表示法 */typedef struct Arcbox {/* 弧的存储 */int tailvex, headvex;/* 弧头, 弧尾节点在顶点数组中的下标 */struct Arcbox *hlink, *tlink;/* 弧头,弧尾相同的链域 */InfoType *info;/* 弧本身信息 */} Arcbox;typedef struct VexNode {/* 顶点存储 */VertexType data;/* 顶点信息 */Arcbox *firstin, *firstout;/* 第一个入弧,第一个出弧 */} VexNode;typedef struct {/* 图的存储 */VexNode xlist[MAX_VERTEX_NUM];/* 顶点数组 */int vexnum, arcnum;/* 顶点数,弧数 */} OLGraph;/* 无向图 邻接多重表 */typedef struct EBox { /* 弧的存储 */VisitIfmark;/* 标记是否被访问过 */int ivex, jvex;/* 依附此弧的两个顶点在数组中的下标 */struct EBox *ilink, *jlink;/* 分别指向这两个顶点的下一条边 */infoTYpe *info;/* 弧本身的信息 */} EBox;typedef struct VexNode {/* 顶点存储 */VertexType data;/* 顶点信息 */EBox *firstedge;/* 第一个边 */} VexBox;typedef struct {/* 图的存储 */vexBox adjmulist[MAX_VERTEX_NUM];/* 顶点数组 */int vexnum, arcnum;/* 顶点数,弧数 */} AMLGraph;


原创粉丝点击