题库 题库

【简答题】

试题四(共15分)
阅读以下说明和C语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
已知包含头结点(不存储元素)的单链表的元素已经按照非递减方式排序,函数compress(NODE *head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。
处理过程中,当元素重复出现时,保留元素第一次出现所在的结点。
图4-1(a)、(b)是经函数compress()处理前后的链表结构示例图。
    
链表的结点类型定义如下:
typedef struct Node {
  int data;
  struct Node *next;
}NODE;
 
[C语言函数]
void compress(NODE *head)
{  NODE *ptr,*q;
  ptr =  (1)  ;  /* 取得第一个元素结点的指针 */
  while (  (2)  && ptr -> next)  {
        q = ptr -> next;
        while(q &&  (3)  ) {  /* 处理重复元素 */
              (4)  = q -> next;
            free(q);
            q = ptr -> next;
        }
        (5)  = ptr -> next;
}/* end of while */
}/* end of compress */

参考答案

(1)head -> next
(2)ptr
(3)q->data == ptr->data或ptr->next->data == ptr->data
(4)ptr -> next
(5)ptr

相关试题