数组栈
完成int IsEmpty(Stack S)函数,该函数判断栈是否已空,如果空返回1,否则返回0。
完成int IsFull(Stack S)函数,该函数判断栈是否已满,如果满返回1,否则返回0。
typedef int ElemType;
struct StackRecord;
typedef struct StackRecord *Stack;
struct StackRecord
{
int Capacity; //栈容量
int Top; //栈顶,初始为1
ElemType *Array;
};
int IsEmpty(Stack S)
{
if(S‐>Top==‐1)
{
return 1;
}
else
{
return 0;
}
}
int IsFull(Stack S)
{
if(S‐>Top==S‐>Capacity‐1)
{
return 1;
}
else
{
return 0;
}
}
链栈
完成int IsEmpty(Stack S);函数,该函数判断栈S是否为空,空栈返回1,否则返回0,已知S是带头结点的链栈。
typedef int ElemType;
struct Node;
typedef struct Node * PtrToNode;
typedef PtrToNode Stack;
struct Node
{
ElemType data;
PtrToNode next;
};
int IsEmpty(Stack S)
{
return S‐>next==NULL?1:0;
}
数组队列
完成int IsEmpty(Queue Q);函数,该函数判断队列Q是否已空,如果已空返回1,否则返回0,其中Q是基于数组的非循环队列。
完成int IsFull(Queue Q)函数,该函数判断队列Q是否已满,如果已满返回1,否则返回0,其中Q是基于数组的非循环队列。
typedef int ElemType;
struct QueueRecord;
typedef struct QueueRecord * Queue;
struct QueueRecord
{
int Capacity; //队列总容量
int Front; //队首 初始值为0
int Rear; //队尾,初始值为1
int Size; //队列中数据数,初始值为0
ElemType *Array;
};
int IsEmpty(Queue Q)
{
return Q‐>Size==0;
}
int IsFull(Queue Q)
{
return Q‐>Rear==Q‐>Capacity‐1?1:0;
}
链队列
完成int IsEmpty(Queue q)函数,该函数判定基于链表的队列q是否为空,空队列返回1,非空队列返回0,其中q是不带头节点的链表队列。
typedef int ElemType;
struct node;
typedef struct node Node;
struct queue;
typedef struct queue * Queue;
struct node
{
ElemType data;
Node * next;
};
struct queue
{
Node * front; //队首
Node * rear; //队尾
int size; //队列中数据数
};
int IsEmpty(Queue q)
{
return q‐>size==0?1:0;
}