某遞增有序單向鍊錶中有重複元素,編寫演算法去除去重複元素。例如
(7,11,11,15,21,21,27,39)去除重複元素後將變為(7,11,15,21,27,39).敘述演算法思想並給出演算法實現,分析演算法複雜性。
指標p指向單鏈表中第乙個元素即head結點後乙個結點,如果p後面存在結點,那麼就將指標q指向p後面的結點。然後在判斷p和q所指得結點的資料是否相同,如果相同則刪除指標指向的元素。(此處不詳細解釋刪除結點的操作)如果不相同則p指標繼續向後遍歷,直到遍歷到p指標後沒有結點遍歷結束
//時間複雜度:o(1)刪除鍊錶中重複元素
void deleterepeat(struct node*headnode)
else
}
}
}
空間複雜度:o(1)
ps:如有錯誤請指正,謝謝!
單向鍊錶的演算法實現
include include using namespace std 定義乙個鍊錶 typedef struct linknode linklist,linknode 1.表示首節點 2.表示節點 初始化鍊錶 bool initlist linklist list list next null r...
C語言 有序遞增鍊錶的插入問題。
已建立乙個帶頭節點的單向鍊錶,鍊錶中的各結點按結點資料域中的資料遞增有序連線。fun函式 把形參x的值放入乙個新結點並插入鍊錶中,使插入的各個資料域的資料仍保持遞增有序。1 include 2 include 3 define n 8 4 typedef struct list 5 slist 8v...
遞增有序順序表插入元素的演算法
題目 設順序表va中的資料元素遞增有序,現將x插入到順序表的適當位置,以保持該順序表依然遞增有序。演算法思想 1.判斷該順序表是否已滿 2.查詢x在順序表a.elem a.length 中的插入位置 i。3.在查詢到x的位置之後,將a.length i 1個元素向後移動乙個位置,從最後乙個元素開始向...