随笔分类 -  数据结构(C语言)

1
摘要:/* c7-4.h 无向图的邻接多重表存储表示 */ #define MAX_VERTEX_NUM 20 typedef enum{unvisited,visited}VisitIf; typedef struct EBox { VisitIf mark; /* 访问标记 */ int ivex,jvex; /* 该边依附的两个顶点的位置 */ struct EBox *ilink,*jlink; /* 分别指向依附这两个顶点的下一条边 */ InfoType *info; /* 该边信息指针 */ }EBox; typedef struct { VertexType d... 阅读全文
posted @ 2013-12-18 13:51 cpoint
摘要:/* c7-3.h 有向图的十字链表存储表示 */ #define MAX_VERTEX_NUM 20 typedef struct ArcBox { int tailvex,headvex; /* 该弧的尾和头顶点的位置 */ struct ArcBox *hlink,*tlink; /* 分别为弧头相同和弧尾相同的弧的链域 */ InfoType *info; /* 该弧相关信息的指针(可无) */ }ArcBox; /* 弧结点 */ typedef struct { VertexType data; ArcBox *firstin,*firstout; /* 分别... 阅读全文
posted @ 2013-12-18 13:49 cpoint
摘要:/* c7-2.h 图的邻接表存储表示 */ #define MAX_VERTEX_NUM 20 typedef enum{DG,DN,AG,AN}GraphKind; /* {有向图,有向网,无向图,无向网} */ typedef struct ArcNode { int adjvex; /* 该弧所指向的顶点的位置 */ struct ArcNode *nextarc; /* 指向下一条弧的指针 */ InfoType *info; /* 网的权值指针) */ }ArcNode; /* 表结点 */ typedef struct { VertexType data; /*... 阅读全文
posted @ 2013-12-18 13:45 cpoint
摘要:/* c7-1.h 图的数组(邻接矩阵)存储表示 */ #define INFINITY INT_MAX /* 用整型最大值代替∞ */ #define MAX_VERTEX_NUM 20 /* 最大顶点个数 */ typedef enum{DG,DN,AG,AN}GraphKind; /* {有向图,有向网,无向图,无向网}*/typedef struct { VRType adj; /* 顶点关系类型。对无权图,用1(是)或0(否)表示相邻否; */ /* 对带权图,c则为权值类型 */ InfoType *info; /* 该弧相关信息的指针(可无) */ }ArcC... 阅读全文
posted @ 2013-12-18 13:42 cpoint
摘要:/* c6-5.h 树的二叉链表(孩子-兄弟)存储表示 */ typedef struct CSNode { TElemType data; struct CSNode *firstchild,*nextsibling; }CSNode,*CSTree; /* bo6-5.c 树的二叉链表(孩子-兄弟)存储(存储结构由c6-5.h定义)的基本操作(17个) */ Status InitTree(CSTree *T) { /* 操作结果: 构造空树T */ *T=NULL; return OK; } void DestroyTree(CSTree *T) { /* 初始条件: ... 阅读全文
posted @ 2013-12-18 13:37 cpoint
摘要:/* c6-4.h 树的双亲表存储表示 */ #define MAX_TREE_SIZE 100 typedef struct { TElemType data; int parent; /* 双亲位置域 */ } PTNode; typedef struct { PTNode nodes[MAX_TREE_SIZE]; int n; /* 结点数 */ } PTree; /* bo6-4.c 树的双亲表存储(存储结构由c6-4.h定义)的基本操作(14个) */ Status InitTree(PTree *T) { /* 操作结果: 构造空树T */ (*T).n=0... 阅读全文
posted @ 2013-12-18 13:36 cpoint
摘要:/* c6-3.h 二叉树的二叉线索存储表示 */ typedef enum{Link,Thread}PointerTag; /* Link(0):指针,Thread(1):线索 */ typedef struct BiThrNode { TElemType data; struct BiThrNode *lchild,*rchild; /* 左右孩子指针 */ PointerTag LTag,RTag; /* 左右标志 */ }BiThrNode,*BiThrTree; /* bo6-3.c 二叉树的二叉线索存储(存储结构由c6-3.h定义)的基本操作 */ Status Cr... 阅读全文
posted @ 2013-12-18 10:31 cpoint
摘要:/* c6-2.h 二叉树的二叉链表存储表示 */ typedef struct BiTNode { TElemType data; struct BiTNode *lchild,*rchild; /* 左右孩子指针 */ }BiTNode,*BiTree; /* bo6-2.c 二叉树的二叉链表存储(存储结构由c6-2.h定义)的基本操作(22个) */ Status InitBiTree(BiTree *T) { /* 操作结果: 构造空二叉树T */ *T=NULL; return OK; } void DestroyBiTree(BiTree *T) { /* 初始条... 阅读全文
posted @ 2013-12-18 10:16 cpoint
摘要:/* c6-1.h 二叉树的顺序存储表示 */ #define MAX_TREE_SIZE 100 /* 二叉树的最大结点数 */ typedef TElemType SqBiTree[MAX_TREE_SIZE]; /* 0号单元存储根结点 */ typedef struct { int level,order; /* 结点的层,本层序号(按满二叉树计算) */ }position; /* bo6-1.c 二叉树的顺序存储(存储结构由c6-1.h定义)的基本操作(23个) */ Status InitBiTree(SqBiTree T) { /* 构造空二叉树T。因为T是固定数组,不会... 阅读全文
posted @ 2013-12-18 10:12 cpoint
摘要:/* c4-3.h 串的块链存储表示 */ #define CHUNKSIZE 4 /* 可由用户定义的块大小 */ typedef struct Chunk { char ch[CHUNKSIZE]; struct Chunk *next; }Chunk; typedef struct { Chunk *head,*tail; /* 串的头和尾指针 */ int curlen; /* 串的当前长度 */ }LString; /* bo4-3.c 串采用块链存储结构(由c4-3.h定义)的基本操作(16个) */ void InitString(LString *T) { /... 阅读全文
posted @ 2013-12-18 10:10 cpoint
摘要:/* c4-2.h 串的堆分配存储 */ typedef struct { char *ch; /* 若是非空串,则按串长分配存储区,否则ch为NULL */ int length; /* 串长度 */ }HString; /* bo4-2.c 串采用堆分配存储结构(由c4-2.h定义)的基本操作(15个) */ /* 包括算法4.1、4.4 */ Status StrAssign(HString *T,char *chars) { /* 生成一个其值等于串常量chars的串T */ int i,j; if((*T).ch) free((*T).ch); /* 释放T... 阅读全文
posted @ 2013-12-18 10:05 cpoint
摘要:/* c4-1.h 串的定长顺序存储表示 */ #define MAXSTRLEN 40 /* 用户可在255以内定义最大串长(1个字节) */ typedef char SString[MAXSTRLEN+1]; /* 0号单元存放串的长度 */ /* bo4-1.c 串采用定长顺序存储结构(由c4-1.h定义)的基本操作(14个) */ /* SString是数组,故不需引用类型。此基本操作包括算法4.2,4.3,4.5 */ Status StrAssign(SString T,char *chars) { /* 生成一个其值等于chars的串T */ int i; if(st... 阅读全文
posted @ 2013-12-18 00:21 cpoint
摘要:/* c3-3.h 队列的顺序存储结构(可用于循环队列和非循环队列) */ #define MAXQSIZE 5 /* 最大队列长度(对于循环队列,最大队列长度要减1) */ typedef struct { QElemType *base; /* 初始化的动态分配存储空间 */ int front; /* 头指针,若队列不空,指向队列头元素 */ int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */ }SqQueue; /* bo3-4.c 顺序队列(非循环,存储结构由c3-3.h定义)的基本操作(9个) */ Status InitQueue(SqQ... 阅读全文
posted @ 2013-12-17 23:49 cpoint
摘要:/* c3-2.h 单链队列--队列的链式存储结构 */ typedef struct QNode { QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front,rear; /* 队头、队尾指针 */ }LinkQueue; /* bo3-2.c 链队列(存储结构由c3-2.h定义)的基本操作(9个) */ Status InitQueue(LinkQueue *Q) { /* 构造一个空队列Q */ (*Q).front=(*Q).rear=(QueuePtr)... 阅读全文
posted @ 2013-12-17 23:48 cpoint
摘要:/* c3-1.h 栈的顺序存储表示 */ #define STACK_INIT_SIZE 10 /* 存储空间初始分配量 */ #define STACKINCREMENT 2 /* 存储空间分配增量 */ typedef struct SqStack { SElemType *base; /* 在栈构造之前和销毁之后,base的值为NULL */ SElemType *top; /* 栈顶指针 */ int stacksize; /* 当前已分配的存储空间,以元素为单位 */ }SqStack; /* 顺序栈 */ /* bo3-1.c 顺序栈(存储结构由c3-1.h定义)的... 阅读全文
posted @ 2013-12-17 23:46 cpoint
摘要:/* c2-4.h 线性表的双向链表存储结构 */ typedef struct DuLNode { ElemType data; struct DuLNode *prior,*next; }DuLNode,*DuLinkList; /* bo2-5.c 双链循环线性表(存储结构由c2-4.h定义)的基本操作(14个) */ Status InitList(DuLinkList *L) { /* 产生空的双向循环链表L */ *L=(DuLinkList)malloc(sizeof(DuLNode)); if(*L) { (*L)->next=(*L)->prio... 阅读全文
posted @ 2013-12-17 23:44 cpoint
摘要:/* bo2-4.c 设立尾指针的单循环链表(存储结构由c2-2.h定义)的12个基本操作 */ Status InitList_CL(LinkList *L) { /* 操作结果:构造一个空的线性表L */ *L=(LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点 */ if(!*L) /* 存储分配失败 */ exit(OVERFLOW); (*L)->next=*L; /* 指针域指向头结点 */ return OK; } Status DestroyList_CL(LinkList *L) { ... 阅读全文
posted @ 2013-12-17 23:43 cpoint
摘要:/* c2-2.h 线性表的单链表存储结构 */ struct LNode { ElemType data; struct LNode *next; }; typedef struct LNode *LinkList; /* 另一种定义LinkList的方法 */ /* bo2-2.c 单链表线性表(存储结构由c2-2.h定义)的基本操作(12个) */ Status InitList(LinkList *L) { /* 操作结果:构造一个空的线性表L */ *L=(LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点... 阅读全文
posted @ 2013-12-17 23:39 cpoint
摘要:/* c2-1.h 线性表的动态分配顺序存储结构 */ #define LIST_INIT_SIZE 10 /* 线性表存储空间的初始分配量 */ #define LISTINCREMENT 2 /* 线性表存储空间的分配增量 */ typedef struct { ElemType *elem; /* 存储空间基址 */ int length; /* 当前长度 */ int listsize; /* 当前分配的存储容量(以sizeof(ElemType)为单位) */ }SqList; /* bo2-1.c 顺序表示的线性表(存储结构由c2-1.h定义)的基本操作(12个) *... 阅读全文
posted @ 2013-12-17 23:37 cpoint
摘要:/* f.c 用函数指针代替C++的引用参数 */ #include void fa(int a) /* 在函数中改变a,将不会带回主调函数(主调函数中的a仍是原值) */ { a=5; printf("在函数fa中:a=%d\n",a); } void fb(int *a) /* a为指针类型,在函数中改变*a,改变后的值将带回主调函数 */ { *a=5; printf("在函数fb中:*a=%d\n",*a); } void main() { int n=1; printf("在主程中,调用函数fa之前:n=%d\n",n); 阅读全文
posted @ 2013-12-17 23:33 cpoint

1
浏览次数:travelocity promotion codes