/* 数据结构 全部结构定义文件 defs.h
* author : star
*/
//引入所有需要的头文件
#include <stdio.h>
#include <stdlib.h>
//防止重复定义
#ifndef DEF_H
#define DEF_H
//定义执行状态返回结果
#define TRUE 1 //成功
#define FALSE 0 //失败
#ifndef FORMATSTR
#define FORMATSTR "%d " //输出格式
typedef int ElemType; //基本数据类型
#endif
//线性表
typedef struct
{
ElemType *data; //数据
int size; //容量
int len; //长度
}SQLIST;
//单链表
typedef struct link_node
{
ElemType data; //数据
struct link_node *next; //结点
}NODE, *NODEPTR, *LINKLIST;
//双向链表
typedef struct dlink_node
{
ElemType data; //数据
struct dlink_node *next, *prior; //前后结点
}DBNODE, *DBNODEPTR, *DBLINKLIST;
//循环单向链表 原理同单链表
//循环双向链表 原理同双向链表
//静态链表
#define SLEN 512 //静态链表长度
typedef struct slink_node
{
ElemType data; //数据
int next; //指针
}SNODE, *SLINKLIST;
/*静态链表是给没有指针的语言写的,C语言有指针,*
*而且静态链表不实用,定义多而杂,因此不写了 */
//广义表
enum{ATOM,LIST};
typedef struct glist_node
{
int tag; //ATOM或LIST
union
{
ElemType data; //ATOM
struct glist_node *head; //LIST
}item;
struct glist_node *next; //结点
}GLNODE, *GLIST;
#endif