软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2015年下半年程序员考试下午真题试题(案例分析)
考试中心《2015年下半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2015年下半年
试题题型【分析简答题】
试题内容

阅读以下说明和 C  代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
       函数 GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。
       函数DelListElem(LinkList L,int i,ElemType *e)  的功能是删除含头结点单链表的第 i个元素结点,若成功则返回 SUCCESS ,并由参数e 带回被删除元素的值,否则返回ERROR 。
       例如,某含头结点单链表 L 如图 4-1  (a)  所示,删除第 3 个元素结点后的单链表如 图 4-1 (b) 所示。

#define  SUCCESS   0
#define  ERROR    -1
 
typedef int Status;
typedef int ElemType;
 
链表的结点类型定义如下:
 
typedef struct Node{
                ElemType data;
                struct Node  *next;
}Node ,*LinkList;
【C 代码】
LinkList  GetListElemPtr(LinkList  L ,int  i)
{ /* L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点:
     若找到,则返回该元素结点的指针,否则返回NULL
*/
          LinkList  p;
          int   k;      /*用于元素结点计数*/
 
          if  (i<1  ∣∣ !L  ∣∣  !L->next)  return NULL;
 
          k  =  1;   P  =  L->next;          / *令p指向第1个元素所在结点*/
          while (p &&             (1)       ) {  /*查找第i个元素所在结点*/
                          (2)       ;  ++k;
          }
          return p;
}
 
Status  DelListElem(LinkList  L ,int i ,ElemType  *e)
{   /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/
 
          LinkList  p,q;
 
          /*令p指向第i个元素的前驱结点*/
          if (i==1)
                     (3)      ;
          else
                p = GetListElemPtr(L ,i-1);
 
          if (!p ∣∣ !p->next)       return ERROR; /*不存在第i个元素*/
 
          q =      (4)     ;            /*令q指向待删除的结点*/
          p->next = q->next;     /*从链表中删除结点*/
                 (5)        ;              /*通过参数e带回被删除结点的数据*/
          free(q);
          return  SUCCESS;
}


相关试题

推荐文章
合作网站内容