#include<stdio.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1 //不可行的
typedef int Status; //Status 是函数返回类型,表示函数结果状态,其值为 OK、ERROR、INFEASIBLE
typedef int Boolean; //布尔型,其值为 TRUE、FALSE
typedef int ElemType; //定义数据元素类型
//以上部分三个基本结构都包含
typedef struct LNode
{
ElemType data;
LNode *next;
}*Link;
void Init1(Link &L)//审明为&,可修改传入的原变量
{//构造空表
L=(Link)malloc(sizeof(LNode));
L->next=NULL;
}
void Init2(Link &L, ElemType a[], int n)
{//将数组 a[]中元素建为长度为 n 的单链表
L=(Link)malloc(sizeof(LNode));
LNode *r,*s;
r=L;
int i;
for (i=0; i<n; i++)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=a[i];
r->next=s;//保持头结点为空
struct QNode
{
ElemType data;
QNode *next;
};
struct Queue
{
QNode *front,*rear;
};
void Init1(Queue &Q)
{
Q.front=Q.rear=(QNode*)malloc(sizeof(QNode));
Q.front->next=NULL;
}
void Init2(Queue &Q, ElemType a[], int n)
{
Q.front=Q.rear=(QNode*)malloc(sizeof(QNode));
QNode *s;
int i;
for (i=0; i<n; i++)
{
s=(QNode*)malloc(sizeof(QNode));
s->data=a[i];
Q.rear->next=s;
Q.rear=s;
typedef struct SNode
{
ElemType data;
SNode *next;
}*Stack;
void Init1(Stack &S)
{
S=(Stack)malloc(sizeof(SNode));
S->next=NULL;
}
void Init2(Stack &S,ElemType a[],int n)
{
S=(Stack)malloc(sizeof(SNode));
S->next=NULL;
SNode *s;
int i;
for (i=0; i<n; i++)
{
s=(SNode*)malloc(sizeof(SNode));
s->data=a[i];
s->next=S;//反向建链