阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 [说明] 用链式存储结构实现的栈称为链栈。若链栈元素的数据类型为datatype,以LinkStack记链栈结构,其类型定义为: typedef struct node { datat

admin2009-02-15  61

问题 阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
[说明]
   用链式存储结构实现的栈称为链栈。若链栈元素的数据类型为datatype,以LinkStack记链栈结构,其类型定义为:
typedef struct node
{  datatype data;
stmct node * next;
} StackNode, * LinkStack;
   由于栈的主要操作都是在栈顶进行的,因此我们把链表的头部作为栈顶。设top为栈顶指针,即:LinkStack top。
   下面各函数的功能说明如下:
   (1)LinkStack Init_LinkStack():建立并返回空的链栈;
   (2)int Empty_LinkStack(LinkStack top):判断top所指链栈是否空;
   (3)LinkStack Push_LinkStack(LinkStacktop,datatypex):将数据x压人top所指链栈的栈顶,返回新栈指针;
   (4)LinkStack Pop_LinkStack (LinkStacktop, datatype*x):弹出top所指链栈的栈顶元素x,返回新栈指针。
[函数]
LinkStaek Init_LinkStack( )
{  returnNULL;
int Empty_LinkStack ( LinkStaek top)
   if(top = = NULL) return 1;
   else return 0;
LinkStaek Push_LinkStaek( LinkStaektop, datatype X)
{  StaekNode *s;
   s=malloc (sizeof(StaekNode) );
     (1)= x;
     (2)= top;
       (3);
   return top;
}
LinkStaek Pop_LinkStack (LinkStacktop, datatype * x)
{    StaekNode *p;
    if(top = = NULL) return NULL;
    else{
         * x =(4);
         p = top;
           (5);
         free (p);
         return top;
     }
}  

选项

答案(1)s->data (2)s->next (3)top=s (4)top->data (5)top=top->next

解析 (1)~(3):LinkStack Push_LinkStack(Link- Stacktop,datmype x)函数的功能是将x压入栈顶,因此首先为其创建一个节点s,使s->data等于x,使s-> next指向原来的栈顶top,最后将,作为新栈的栈顶并返回。
(4)~(5):LinkStack Pop_LinkStaek(LinkStacktop, datatype*x)的功能是弹出原栈顶元素,返回这个元素以及新栈的指针。当原链栈不空时,取出栈顶元素top ->data赋给参量*x作为返回值,将top->next更新为新栈的栈顶,并且释放原来top节点的空间。
转载请注明原文地址:https://jikaoti.com/ti/arW7FFFM
0

最新回复(0)