1、---------线性表的动态分配的顺序存储结构--------
#define LIST_INTI_SIZE 100 //线性表存储空间的初始配置
#difine LISTINCREMENT 10 //线性表存储空间的分配增量
typedef struct {
EleType *elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量(以(sizeof(ElemType)为单位)
}Sqlist;
2 --------------------线性表的单链表存储结构-----------------------
typedef struct LNode{
ElemType data;
struct LNode *next; //指向下一个节点的指针
}LNode ,*LinkList;
3.---------------------栈的存储表示--------------------
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;
}Sqstack;
4.-----------------------单链队列-队列的链式存储结构-----------------
typedef struct QNode{
ElemType data;
struct QNode *next;
}QNode, *QueuePtr;
typedef struct {
QueuePtr front; //队头指针
QueuePtr rear; //队尾指针 这里rear之所以不用加*,是因为QueuePtr就是指向 //QNode 的指针
}LinkQueue;
5---------------数组的顺序存储表示----------------------
#include<stdarg.h> //标准头文件,提供宏va_start,va_arg,va_end,用于存取变长参数表
#define MAX_ARRAY_DIM 8 //假设数组的最大维数为8
typedef struct{
ElemType *base; //数组元素基址,由InitArray分配
int dim; //数组维数
int *bounds; //数组维界基址
int * constants; //数组映像函数常量基址,忧IntiArray分配
}Array;
6.---------------广义表头尾链表存储表示--------------------
typedef enum {ATOM,LIST} ElemTag; //ATOM ==0 原子 LIST == 1 子表
typedef struct GLNode{
ElemTag tag;
union {
AtomType atom ; //原子节点和表结点的联合部分
struct {struct GLNode *hp,*tp;}ptr
};
}*GList;
7.--------------二叉树的顺序存储表示---------------
#define MAX_TREE_SIZE 100
typedef TElemType SqBiTree[MAX_TREE_SIZE]; //0号单元存储根节点
SqBiTree bt;
---------------二叉树的链表存储表示------------------
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild; //左右孩子指针
}BiTNode, *BiTree;
8.=================树的存储表示============
1)、双亲表示法
#define MAX_TREE_SIZE 100
typedef struct PTNode{
ElemType data;
int parent; //双亲位置域
}
typedef struct{
PTNode nodes[MAX_TREE_SIZE];
int length; //结点数
}PTree;
2).孩子表示法------树的孩子链表存储表示----------
typedef struct CTNode{
int child;
struct CTNode *next;
} *childPtr;
typedef struct {
ElemType data;
ChildPtr firstchild; //孩子链表头指针
}CTBox;
typedef struct{
CTBox nodes[MAX_TREE_SIZE];
int n,r; //结点数和根的位置;
}
//这里的CTBox和ChildPtr是两个不同的数据 ,CTBox表示的是头结点,
//而ChildPtr是指向孩子结点的指针。CTNode是头结点指向的孩子结点的表示形式
3)、---------------树的二叉链表(孩子-兄弟)表示法
typedef struct CSNode{
ElemType data;
struct CSNode *fristchild, *nextsibling; // fristchild 指向的是第一个孩子, //nextsibling指向的是第一个兄弟结点
}CSNode, *CSTree;
//明天继续。。。。。。