在一个递增有序的线性表中 有数值相同的元素存在。若存储方式为单链表 设计算法去掉数值相同的元

大学 数值,算法,元素 已帮助 人

在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。例如:(7,10,10,21,30,42,42,42,51,70)将变作(7,10,21,30,42,51,70),分析算法的时间复杂度。【北京工业大学1996三(15分)】

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

热搜:二叉排序树可以得到一个从小到大的有序序列

答案解析

难度★★☆ 搜索
  • 正确答案:非递减有序(原题称为递增有序)单链表删除重复元素的核心语句段如下: while(p) //pre是P所指向结点的前驱结点的指针P初始指向第二个结点 if(P一>data==pre一>data) //处理相同元素值的结点 {u=p;p=p->next;delete(u);) //释放相同元素值的结点 else{pre一>next=p;pre=p;p=p->next;) //处理前驱后继元素值不同 pre一>next=p;//2链表尾。非常重要
    非递减有序(原题称为递增有序)单链表删除重复元素的核心语句段如下:while(p)//pre是P所指向结点的前驱结点的指针,P初始指向第二个结点if(P一>data==pre一>data)//处理相同元素值的结点{u=p;p=p->next;delete(u);)//释放相同元素值的结点else{pre一>next=p;pre=p;p=p->next;)//处理前驱,后继元素值不同pre一>next=p;//2链表尾。非常重要,