问答题
【说明】
已知包含头结点(不存储元素)的单链表的元素已经按照非递减方式排序,函数 compress(NODE*head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。
处理过程中,当元素重复出现时,保留元素第一次出现所在的结点。
图2-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->dat......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)