有一个单链表 其结点的元素值以非递减有序排列 编写一个函数删除该单链表中余的元素值相同的结点

大学 结点,元素,排列 已帮助 人

有一个单链表,其结点的元素值以非递减有序排列,编写一个函数删除该单链表中余的元素值相同的结点。

请帮忙给出正确答案和分析,谢谢!

热搜:利用二叉链表存储树,则根结点的右指针

答案解析

难度★★☆ 搜索
  • 正确答案:本题采用的算法是:从头到尾扫描该单链表并作这样的操作:若当前结点的元素值与后续结点的元素值不相等则指针后移否则删除该后续结点直到扫描所有的结点。实现速功能的函数如下: node*delete(node*head) { node*q; if(head!=NuLL) { /;当前结点的元素值与后续结点的元素值不相等则指针后移否则删除该后续结点*/. while(P一>next!=NULL) if(p一>data!=P一>next一>data)p=P一>next; { q=P一>next; P一>next=q一>next; free(q); } } return(head); }
    本题采用的算法是:从头到尾扫描该单链表,并作这样的操作:若当前结点的元素值与后续结点的元素值不相等,则指针后移,否则删除该后续结点,直到扫描所有的结点。实现速功能的函数如下:node*delete(node*head){node*q;if(head!=NuLL){/;当前结点的元素值与后续结点的元素值不相等,则指针后移,否则删除该后续结点*/.while(P一>next!=NULL)if(p一>data!=P一>next一>data)p=P一>next;{q=P一>next;P一>next=q一>next;free(q);}}return(head);}