【简答题】
试题五
阅读下列说明和C代码,将应填/k_(n)—处的字句写在答题纸的对应栏内。
[说明]
本题给出四个函数,它们的功能分别是:
①int push(PNODE *top,int e)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。
②int pop(PNODE *top,int oe)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。
③int enQueue(PNODE *tail,int e)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。
④int deQueue(PNODE *tail,int *e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。
以上四个函数中,返回值为0表示操作成功,返回值为-1表示操作失败。栈是用链表实现的;队是用带有辅助结点(头结点)的单向循环链表实现的。两种链表的结点类型均为:
typedef struct node{
int value;
struct node *next;
}NODE,*PNODE;
[函数①]
int push(PNODE *top,int e)
{
PNODE p = (PNODE)malloc(sizeof(NODE));
if(!p) return –1;
p->value = e;
___(1)___;
*top = p;
return 0;
}
[函数②]
int pop(PNODE *top,int *e)
{
PNODE p = *top;
if(p == NULL) return –1;
*e = p->value;
___(2)____;
free(p);
return 0;
}
[函数③]
int enQueue(PNODE *tail,int e)
{
PNODE p,t;
t = *tail;
p = (PNODE)malloc(sizeof(NODE));
if(!p) return –l;
p—>value = e;
p—>next = t—>next;
____(3)____;
*tail = p;
return 0;
}
[函数④]
int deQueue(PNODE *tail,int *e)
{
PNODE p,q;
if((*tail)->next == *tail)return –1;
p = (*tail)->next;
q = p->next;
*e = q->value;
___(4)___ = q->next;
if(*tail = q) ___(5)___;
free(q);
return 0;
}